Autore Topic: [RISOLTO] Come creare un database sqlite3 da codice  (Letto 539 volte)

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
[RISOLTO] Come creare un database sqlite3 da codice
« il: 10 Gennaio 2017, 21:44:50 »
Se a qualcuno può tornare utile, si fa così... sembra difficile ma non lo è, provate  ;)

Il codice crea una cartella nella Home chiamata MyReport e all'interno il database Report_DB.sqlite

Codice: [Seleziona]
Public Sub Form_Open()

Dim vConnessione As New Connection
Dim vPercorso As String ' variabile per il percorso in cui creare il db
Dim vDatabase As String ' variabile per il nome che diamo al database
Dim vTabella As Table
Dim vTabellaUno As String ' variabile per la creazione della tabella UNO e dei campi
Dim vTabellaDue As String ' variabile per la creazione della tabella DUE e dei campi
Dim vRisultato As Result

vPercorso = User.Home &/ "MyReport/" ' definisce il percorso del database
vDatabase = "Report_DB.sqlite" ' definisce il nome del database

vTabellaUno = "CREATE TABLE 'NomeTabellaUno'" & ' nome della tabella e dei campi che si andrà a creare
                        "('id_TabellaUno' INTEGER PRIMARY KEY," & ' chiave primaria
                        "'NomeCampoUnoNumerico' INTEGER Default '0'," & ' nome del campo, tipo e valore predefinito
                        "'NomeCampoDue' VARCHAR(55) Default Null," & ' nome del campo, tipo e valore predefinito
                        "'NomeCampoTre' VARCHAR(55) Default Null);" ' nome del campo, tipo e valore predefinito
vTabellaDue = "CREATE TABLE 'NomeTabellaDue'" &
                        "('id_TabellaDue' INTEGER PRIMARY KEY," &
                        "'NomeCampoUnoNumerico' INTEGER Default '0'," &
                        "'NomeCampoDue' VARCHAR(55) Default Null," &
                        "'NomeCampoTre' VARCHAR(55) Default Null);"

With vConnessione
.Type = "sqlite3" ' indicazione del tipo di database da utilizzare
.Host = vPercorso
.Login = ""
.Password = ""
End With

If Not Exist(vPercorso) ' se non esiste la cartella MyReport
Mkdir User.Home & "/MyReport" 'creala
End If

vConnessione.Open() ' apre la connessione
If Not vConnessione.Databases.Exist(vDatabase) Then ' verifica che il db non esista già
vConnessione.Databases.Add(vDatabase) ' crea il database
vConnessione.Close() ' chiude la connessione
vConnessione.Name = vDatabase ' alla connessione assegna il nome del database
vConnessione.Open() ' riapre la connessione
vRisultato = vConnessione.Exec(vTabellaUno) ' aggiunge al database la tabella con i campi, come sopra definito
vRisultato = vConnessione.Exec(vTabellaDue) ' aggiunge al database la tabella con i campi, come sopra definito
Message.Info("Nella Home è stata creata la cartella ''MyReport''" & Chr$(10) & "e il database ''Report_DB.sqlite''", "Ok") ' informa che il database è stato creato
Endif
vConnessione.Close() 'chiude la connessione

End Sub
« Ultima modifica: 11 Gennaio 2017, 16:41:24 da ilfurlan »
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:[RISOLTO] Come creare un database sqlite3 da codice
« Risposta #1 il: 10 Gennaio 2017, 22:35:11 »
Successivamente per connettersi:
Codice: [Seleziona]
Dim vConnessione As New Connection

With vConnessione
.Type = "sqlite3" ' indicazione del tipo di database da utilizzare
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With

vConnessione.Open()
qui scrivo il codice per agire sul database
vConnessione.Close()
« Ultima modifica: 11 Gennaio 2017, 16:41:59 da ilfurlan »
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:[RISOLTO] Come creare un database sqlite3 da codice
« Risposta #2 il: 11 Gennaio 2017, 15:19:23 »
Mi riferisco al tuo primo post:
Vorrei darti un paio di suggerimenti ma chiederti prima di tutto di utilizzare i giusti attrezzi per postare il codice.
La citazione quote serve appunto per citare (quotare) quanto ha scritto un altro membro per meglio indicare a cosa stiamo rispondendo.
Se invece come in questo caso postiamo del codice esemplificativo allora esso va posto fra i tag code, tasto cancelleto.

Ti prego pertanto di cambiare i vari post dove non hai seguito le regole, grazie.

Indentazione essa è molto importante per permettere sia a chi programma sia a chi legge di avere una visione più chiara del codice, se non sai come si fa la ide di Gambas ti aiuta non serve neanche che evidenzi il codice ti basta dare la sequenza di tasti Ctrl+Shift+F e il codice come di incanto va a posto tutto bello formattato.

vRisultato (Result) per creare le tabelle non serve, Result serve solo quando si interroga una tabella con SQL, c'era una bella spiegazione di Sotema ma non l'ho trovata, comunque Result restituisce una matrice di sola lettura che si può interrogare con For Each.


Vedo che alla fine ti sei risolto a non usare le funzioni di Gambas per creare il database e le tabelle.

Qui invece in generale:
Se vuoi invece proseguire con il Data Source forse ti converrebbe scaricare e studiarti DataBaseExample dalla software farm per evitare di creare dei pastrocchi mischiando le cose, anche
A Beginner's Guide to Gambas nel capitolo 15 spiega qualcosa al riguardo.

Io come già ti suggerii all'inizio proseguirei con SQL e gb.db come facciamo quasi tutti, avresti più facilmente aiuto.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:[RISOLTO] Come creare un database sqlite3 da codice
« Risposta #3 il: 11 Gennaio 2017, 16:54:49 »
Citazione
Vorrei darti un paio di suggerimenti ma chiederti prima di tutto di utilizzare i giusti attrezzi per postare il codice.
La citazione quote serve appunto per citare (quotare) quanto ha scritto un altro membro per meglio indicare a cosa stiamo rispondendo.
Se invece come in questo caso postiamo del codice esemplificativo allora esso va posto fra i tag code, tasto cancelleto.

Conosco le regole, ma hai ragione, sono maldestro... troppa premura nel fare le cose  ;) adesso correggo...
mi sono mal abituato, scrivendo "quote" invece di "code" si legge tutto ma so che non è giusto  :mad:

Citazione
vRisultato (Result) per creare le tabelle non serve, Result serve solo quando si interroga una tabella con SQL, c'era una bella spiegazione di Sotema ma non l'ho trovata, comunque Result restituisce una matrice di sola lettura che si può interrogare con For Each

Avevo messo (Result) nel mio programma per una interrogazione SQL, poi quando ho pensato che il codice poteva essere utile anche per altri,
ho fatto il copia/incolla e non ho cancellato quella riga (maldestro), comunque non influisce ed è intuitiva per chi impara.

Citazione
Se vuoi invece proseguire con il Data Source forse ti converrebbe scaricare e studiarti DataBaseExample dalla software farm per evitare di creare dei pastrocchi mischiando le cose, anche
A Beginner's Guide to Gambas nel capitolo 15 spiega qualcosa al riguardo.

DataBaseExample l'ho installato mentre il DataSource mi interessa apprenderlo, è lì, perchè non imparare anche quello  :-[

Citazione
Io come già ti suggerii all'inizio proseguirei con SQL e gb.db come facciamo quasi tutti, avresti più facilmente aiuto.

non ho dimenticato, sto sperimentando anche questo... abbi pazienza, vedrai che ci arrivo   :2birre:
« Ultima modifica: 11 Gennaio 2017, 17:04:09 da ilfurlan »
Non insegno ma imparo per riportare ad altri il mio sapere.