Autore Topic: [RISOLTO] Errore in SQLite3  (Letto 1083 volte)

Offline Aldus67

  • Gamberetto
  • *
  • Post: 6
    • Mostra profilo
[RISOLTO] Errore in SQLite3
« il: 04 Gennaio 2011, 23:45:25 »
Io ho il seguente codice:

Codice: [Seleziona]
  DIM sql AS String
  DIM hres AS Result
  IF bop = 1 THEN
    WITH MSysCont.$hConn
      .Type = "sqlite3"
      .Host = MSysCont.sPercorso
      .Login = ""
      .Password = ""
      .Open
      .Begin
      hres = .Create("clienti")
      hres!ragsociale = TextBox1.Text
      hres!indirizzo = TextBox2.Text
      hres!cap = TextBox3.Text
      hres!citta = TextBox4.Text
      hres!provincia = TextBox5.Text
      hres!partitaiva = TextBox6.Text
      hres!codicefiscale = TextBox7.Text
      hres!telefono1 = TextBox8.Text
      hres!telefono2 = TextBox9.Text
      hres!fax = TextBox10.Text
      hres!email = TextBox11.Text
      hres.Update
      .Commit
      .Close
    END WITH
    bOp = 0
    MenuFileApri.Enabled = TRUE
    MenuFileNuovo.Enabled = TRUE
    MenuFileSalva.Enabled = FALSE
    MenuFileStampa.Enabled = TRUE
    FPulisci
  ENDIF

Quando lancio il programma con F5 alla riga che dice:
hres = .Create("clienti")
mi da' il seguente errore:
Unknown table: clienti

Ho già controllato che nel database la tabella clienti è presente (vuota)...
...e non so che fare
 :hatecomputer:
« Ultima modifica: 05 Gennaio 2011, 22:57:25 da Aldus67 »

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Errore in SQLite3
« Risposta #1 il: 05 Gennaio 2011, 09:01:14 »
Ciao,
prova con questa funzione
Codice: gambas [Seleziona]

PUBLIC $conn AS NEW Connection

PUBLIC sqliteName AS String = "prova"
PUBLIC sqlitePercorso AS String = Application.Path
'''XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

PUBLIC PROCEDURE Connect()


  
   $conn.Close  
   $conn.Type = "sqlite3"
   $conn.Host = sqlitePercorso
   $conn.Name = sqliteName
   $conn.Open

END

PUBLIC PROCEDURE disconnect()
   $conn.Close  
END

'''XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

PUBLIC SUB controlladb()


    IF NOT Exist(sqlitePercorso & "/" & sqliteName) THEN
     IF Message.Question("Creo il database", "Si", "No") = 1 THEN
      WITH $conn
      .Type = "sqlite3"
      .Host = sqlitePercorso

      END WITH

      $conn.Open    

      $conn.Databases.Add(sqliteName)            
      $conn.Close        
      
      $conn.Name = sqliteName
      $conn.Open()
      creatabella()
    ENDIF  
    ENDIF
END


PUBLIC SUB creatabella()

DIM sql AS String
      sql = "CREATE TABLE 'rubrica' ("
      sql &= " 'idrubrica' INTEGER PRIMARY KEY,"    
      sql &= " 'cognome' varchar(20) DEFAULT NULL,"
      sql &= " 'nome' varchar(20) DEFAULT NULL,"
      sql &= " 'indirizzo' varchar(30) DEFAULT NULL,"            
      sql &= " 'citta' varchar(30) DEFAULT NULL,"
      sql &= " 'provincia' varchar(20) DEFAULT NULL,"
      sql &= " 'telefono' varchar(10) DEFAULT NULL);"        
      $conn.EXEC(sql)
      $conn.Commit
      $conn.Close

END


se questo codice lo metti in un modulo con nome esempio MODMain
all'apertura del programma ci metti un bel

Codice: gambas [Seleziona]
MODMain.controlladb()

così controlla se esiste il db, altrimenti lo crea e crea anche la tabella
e per connetterti al database un bel
Codice: gambas [Seleziona]
MODMain.Connect()

fammi sapere, ciao
« Ultima modifica: 05 Gennaio 2011, 09:05:53 da Golia »

Offline Taurus dei miracoli

  • Maestro Gambero
  • ****
  • Post: 334
  • In omnia pericula tasta testicula
    • Mostra profilo
Re: Errore in SQLite3
« Risposta #2 il: 05 Gennaio 2011, 15:04:58 »
Però con l'istruzione

hres = .Create("clienti")

non si crea la tabella, ma la si collego in modalità creazione record.
Il codice che hai proposto è per la creazione di db e tabella.
Inoltre il codice è stato preso in modo quasi pedissequo dalla guida proposta nella sezione download.
Non so. :hatecomputer:
"penso spesso ad acquiloni,
a grandi imprese,
ad una thailandese...
...ma l'impresa eccezionale,
dammi retta,
è essere normale"
(L. Dalla)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Errore in SQLite3
« Risposta #3 il: 05 Gennaio 2011, 18:56:18 »
non hai indicato un nome per il db o è già presente nel percorso?

cmq se ti dice che non esiste la tabella clienti vuol dire che dove la sta cercando non esiste la tabella clienti.

ricontrolla le variabili di connessione

Offline Aldus67

  • Gamberetto
  • *
  • Post: 6
    • Mostra profilo
Re: Errore in SQLite3
« Risposta #4 il: 05 Gennaio 2011, 22:56:42 »
Era effettivamente un problema di connessione.
Ho riscritto un pochino di codice ed ho risolto.
Grazie
 :ok: