Autore Topic: connessione database  (Letto 4130 volte)

g.paolo

  • Visitatore
connessione database
« il: 08 Febbraio 2008, 18:49:05 »
Vogliate scusare la mia grande ignoranza, ma provenendo dal mondo di Access dove è tutto abbastanza semplice, e non serve connettersi ad un DB esterno, non riesco ancora a capire come fare ad usare un DB creato con kexi all'interno di gambas.
Non so proprio dove reperire le info necessarie per capire il meccanismo di collegamento, o forse sto dicendo una grande fesseria e non me ne rendo proprio conto.
Ho importato tutte le mie tabelle in kexi il quale lavora con sqlite3, e fino che sono all'interno di questo posso fare interrogazioni, relazioni e report, ma dall'esterno non so proprio come agire.
Se non conoscete kexi, una breve descrizione in italiano la si trova in:
http://it.wikipedia.org/wiki/Kexi
perchè sul sito in lingua inglese non sono proprio riuscito a capire un accidenti.

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: connessione database
« Risposta #1 il: 08 Febbraio 2008, 19:29:32 »
Niente di più facile.

Hai bisogno di dichiarare 2 oggetti, di tipo Connection e Result.

Ecco un esempio di connessione:
Codice: [Seleziona]

DIM Connessione AS NEW Connection
DIM Risultato AS Result

  '-- connetti al database
  Connessione.Name = Application.Path & "/nome_db"
  Connessione.Type = "sqlite3"
  Connessione.OPEN
  Risultato = Connessione.Find("nome_tabella", "tuocampo = &1", NomeVariabile)
  IF Risultato.Available = FALSE THEN
    Msgbox("Nessun campo presente in base alla query impostata")
  END IF
  Risultato["nomecampo"] = Variabile
  Risultato.Update '-- aggiorni i campi
  Connessione.Commit '-- scrivi fisicamente nel DB
  Connessione.Close

Alternativamente, al posto di Connessione.Find puoi usare Connessione.Exec("...") per eseguire una query in SQL puro.
Visita il mio sito personale: http://www.leonardomiliani.com

g.paolo

  • Visitatore
Re: connessione database
« Risposta #2 il: 09 Febbraio 2008, 08:25:13 »
Un grazie grosso così Leo!
A volte le cose sono semplici, ma per chi le sa già, e trovare la giusta dritta non è sempre facile.
Grazie di nuovo!

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: connessione database
« Risposta #3 il: 09 Febbraio 2008, 10:47:29 »
Se cerchi in un mio precedente post, ho messo esempi di codice per creare, modificare e cancellare dati in un DB SQLite3.
Visita il mio sito personale: http://www.leonardomiliani.com

g.paolo

  • Visitatore
Re: connessione database
« Risposta #4 il: 17 Febbraio 2008, 15:30:35 »
Alla fine ci sono riuscito, adattando il codice di un esempio al mio DB. E' comunque tutto molto difficile non disponendo di una guida adeguata. Faccio un esempio: ho cercato di spezzare su due righe un comando Select lunghissimo, e qui casca l'asino. Quello che potevo fare facilmente in VB mettendo a fine riga un ";", qui non funziona, e nella guida Gambas "A beginners guide..." non trovo la soluzione.
Ho dovuto per forza ricorrere al concatenamento di due variabili stringa per ricomporre il comando, ma questo mi sembra molto riduttivo, non credete?

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: connessione database
« Risposta #5 il: 17 Febbraio 2008, 16:41:57 »
Citazione

darth14n ha scritto:
Alla fine ci sono riuscito, adattando il codice di un esempio al mio DB. E' comunque tutto molto difficile non disponendo di una guida adeguata. Faccio un esempio: ho cercato di spezzare su due righe un comando Select lunghissimo, e qui casca l'asino. Quello che potevo fare facilmente in VB mettendo a fine riga un ";", qui non funziona, e nella guida Gambas "A beginners guide..." non trovo la soluzione.
Ho dovuto per forza ricorrere al concatenamento di due variabili stringa per ricomporre il comando, ma questo mi sembra molto riduttivo, non credete?


Hai provato con "&" a fine riga. Va bene per le stringhe e per i comandi SHELL. Prova
se fa al caso tuo. Ciao.

g.paolo

  • Visitatore
Re: connessione database
« Risposta #6 il: 17 Febbraio 2008, 18:24:47 »
Grazie, funziona bene con le stringhe, ma non per mettere i comandi normali su piu righe come si faceva normalmente in VB.
Quindi va bene con l'esempio seguente:

str1 = "SELECT rio_loc.id_loc, rio_loc.localita, comuni.comune, " &
       "zone.zona FROM rio_loc, zone, comuni WHERE comuni.id_com = rio_loc.id_com " &
       "AND zone.id_zona = comuni.id_zona ORDER BY rio_loc.id_loc "

ma non per spezzare ad esempio il comando:
hForm = NEW FRequest(connessione, rData)

che non puo essere scritto nel modo:
hForm = NEW FRequest &
(connessione, rData)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: connessione database
« Risposta #7 il: 17 Febbraio 2008, 19:43:20 »
variabile = "testo di prova"
variabile &= "altro testo"


notare bene i caratteri "&=", stessa cosa per i numer, ad esempio...

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: connessione database
« Risposta #8 il: 17 Febbraio 2008, 19:45:53 »
Per i comandi basta che vai a capo, senza inserire alcunchè...
l'importante è che termini la frase con i giusti caratteri, ad esempio le parentesi

g.paolo

  • Visitatore
Re: connessione database
« Risposta #9 il: 19 Febbraio 2008, 09:09:41 »
Ringrazio molto per la dritta e la Vs. cortese disponibilità.

  • Visitatore
Re: connessione database
« Risposta #10 il: 01 Marzo 2008, 20:16:49 »
faccio un test con sqlite :
Codice: [Seleziona]

PUBLIC Conexion As Connection
PUBLIC Resultado As Connection

PUBLIC SUB ConectarDB_Click()
Conexion = NEW Connection
Conexion.Name = Application.Path & "/TestGambas.sqlite"
Conexion.Type = "sqlite3"
Conexion.OPEN()
Resultado = Conexion.Exec("SELECT * FROM TTestGambas")
IF Resultado.Available = FALSE THEN
   Message.Error("No es disponible")
   RETURN
END IF
Conexion.Close()
END


me responde con Message = "No es disponible"

se conecta o no????

con mysql server non ho nessun problemma di gestione database.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: connessione database
« Risposta #11 il: 02 Marzo 2008, 02:32:24 »
Che vuol dire "con mysql server non ho nessun problemma di gestione database." ?
E' probabile che con sqlite devi fare qualche aggiustamento.

Fai qualche passo indietro:

- verifica se la connessione è veramente aperta (usa try catch, per esempio...);
- verifica se hai messo tutti i parametri necessari alla connessione;
- verifica se la tabella e il file esistono veramente;
- verifica se "Application.Path" + ritornano la corretta posizione.

Usa il debug o in alternativa metti qualche PRINT tra un comando e l'altro.

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: connessione database
« Risposta #12 il: 02 Marzo 2008, 10:44:25 »
Prova con:
Codice: [Seleziona]

Resultado = Conexion.Find("TTestGambas")
Visita il mio sito personale: http://www.leonardomiliani.com

  • Visitatore
Re: connessione database
« Risposta #13 il: 02 Marzo 2008, 16:47:39 »
per questione di lavoro sto migrando da vb6 + vs2005 + c++ verso il opensource da  + di 9 mesi.ok con monodevelop e python.
sono in apprendistato con gambas.
la situazione e cosi:
creo un database .sqlite con sqlitestudio.
mi connetto al DB.niente,non accessibile.
allora creo una row nel DB.ok,mi connetto.
questa è la situazione.cmq,mi sta bene.facile da gestire e trasportare.

Codice: [Seleziona]

- verifica se la connessione è veramente aperta (usa try catch, per esempio...);
- verifica se hai messo tutti i parametri necessari alla connessione;
- verifica se la tabella e il file esistono veramente;
- verifica se "Application.Path" + ritornano la corretta posizione.

avevo già controllato ( esperienza dal vstudio2005 )

Codice: [Seleziona]

Usa il debug o in alternativa metti qualche PRINT tra un comando e l'altro.

anche questo ( esperienza dal vb6 ),debug con la funzione passo a passo con variabili locali per tenere sott'occhio.



in Edit (dimenticavo):
Codice: [Seleziona]

Resultado = Conexion.Find("TTestGambas")

errore sql.........

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: connessione database
« Risposta #14 il: 02 Marzo 2008, 18:46:32 »
Beh, se ti da errore di connessione allora il problema è nel database.
Prova a creare un database direttamente dalla console di sqlite3 oppure usa l'ottimo programma knoda.
La sintassi del tuo codice è giusta: se non va è per colpa del DB non di Gambas.
Visita il mio sito personale: http://www.leonardomiliani.com