Niente da fare, non capisco proprio!
Questo è il codice che ho provato, ma l'errore è sempre lo stesso:
Query failed: SQL error or missing database
WITH connessione
.Name = user.home & nomeDB
.Type = "sqlite3"
.OPEN
.Begin
sql = "CREATE TABLE prova("
"id integer NOT NULL primary key autoincrement, "
"descrizione char);"
.Exec(sql)
.Commit
.Close
END WITH
CATCH
Message.Error(Error.Text)
connessione.Close
END
nei parametri di connessione non hai impostato il parametro host (percorso)
inoltre prova anche a indicare la lunghezza anche per i campi integer (a parte l' id)
WITH connessione
.Name = user.home & nomeDB
.Type = "sqlite3"
.Host=percorso del db
.OPEN
.Begin
sql = "CREATE TABLE 'prova' ("id INTEGER PRIMARY KEY,"
sql=sql & " 'descrizione' VARCHAR(255) DEFAULT NULL);"
.Exec(sql)
.Commit
.Close
END WITH
CATCH
Message.Error(Error.Text)
connessione.Close
END
così dovrebbe funzionare
scusa ho fatto un errore :muro: così è corretto:
WITH connessione
.Name = user.home & nomeDB
.Type = "sqlite3"
.Host=percorso del db
.OPEN
.Begin
sql = "CREATE TABLE 'prova' ('id' INTEGER PRIMARY KEY,"
sql=sql & " 'descrizione' VARCHAR(255) DEFAULT NULL);"
.Exec(sql)
.Commit
.Close
END WITH
CATCH
Message.Error(Error.Text)
connessione.Close
END
il risultato deve essere:
sql = "CREATE TABLE 'prova' ('id' INTEGER PRIMARY KEY, 'descrizione' VARCHAR(255) DEFAULT NULL);"
posto questo messaggio qui per non aprire un nuovo post.
oggi ho trovato questa query sql per otteere l' elenco delle tavole di un db sqlite
"SELECT name, sql FROM sqlite_master WHERE type='table' ORDER BY name;"
qualcuno sa invece la query per ottenere l' elenco dei field di una tavola?
ho provato con
"PRAGMA TABLE_INFO(nome tavola);"
ma sembra non funzionare!
@fsurfing
Questa routine funziona come vuoi tu, basta solo che cambi il nome della tabella e del DB e che la adatti al tuo scopo. ciao!
PUBLIC SUB nomi_campi()
'---------------------------------------------------------------------------------------
'stampa in console i nomi campo di una table
'---------------------------------------------------------------------------------------
DIM connessione AS NEW Connection
DIM campo AS Integer
DIM result AS Result
DIM nomeDB as String="tuoDB"
INC Application.Busy
WITH connessione
.Name = user.home & nomeDB 'percorso e nome del file di database sqlite3
.Type = "sqlite3"
.OPEN
.Begin
result = .Exec("select tuatable.* from tuatable")
campo = 0 'reset contatore di posizione campo
FOR EACH result.Fields 'cicla sui campi
PRINT result.Fields[campo].name & " ";
INC campo 'indice di campo
NEXT
.Commit
END WITH 'connessione
connessione.Close
DEC Application.Busy
CATCH
Message.Error(Error.Text)
connessione.Close
END
grazie mille funziona alla grande! non ci avevo pensato ! :-)
c'è solo un piccolo errore nella linea:
result = .Exec("select tuatable.* from tuatable")
che deve essere corretto con:
result = .Exec("select * from tuatable")