Autore Topic: [RISOLTO] Controllo connessione MySql  (Letto 774 volte)

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
[RISOLTO] Controllo connessione MySql
« il: 27 Ottobre 2014, 20:20:45 »
Buonasera a tutti,
in un progetto stò cercando di implementare la creazione di un database direttamente da codice,
premesso ovviamente che Mysql sia installato e funzionante.
Usando questo codice:
 
Codice: gambas [Seleziona]
Dim hConn As Connection

 hConn = New Connection("mysql://gambas@localhost:3306/db_test")
 hConn.Password = "gambas"
 hConn.Open()


naturalmente mi restituisce un errore indicandomi che il DB "db_test" non esiste, e fin qui tutto ok.
La difficoltà che incontro è nel proseguire, perchè qualsiasi istruzione io inserisca successivamente
mi ritorna sempre lo stesso messaggio su hConn.Open():
Cannot open database: Unknown database 'db_test'

Come posso controllare l'errore tenendo la connessione aperta in modo che possa con istruzioni
successive creare il nuovo DB?
« Ultima modifica: 28 Ottobre 2014, 14:02:42 da tornu »
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re: Controllo connessione MySql
« Risposta #1 il: 27 Ottobre 2014, 22:30:08 »

Ciao tornu,
siccome sono pigro non vado a vedere, ma sono quasi certo che di questa cosa se ne è ampiamente parlato.

Guarda un po se questo codice per SQLite ti può ispirare:
Codice: gambas [Seleziona]

Public Sub ControlloDB()

    If Not Exist(sPercorsoDB) Then Mkdir sPercorsoDB         
     
    With $Conn
      .Type = "sqlite3"
      .Host = sPercorsoDB
    End With
    $Conn.Open()
    If Not $Conn.Databases.Exist(sNomeDB) Then
       $Conn.Databases.Add(sNomeDB)
       $Conn.Close()     
       $Conn.Name = sNomeDB
       $Conn.Open()
       CreaTabelle()
       PopoloTabella()
    Endif   
    $Conn.Close 
   
End
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Controllo connessione MySql
« Risposta #2 il: 28 Ottobre 2014, 01:00:15 »
.......siccome sono pigro non vado a vedere, ma sono quasi certo che di questa cosa se ne è ampiamente parlato.
Ciao Gianluigi,
ti assicuro che prima di postare faccio sempre una ricerca approfondita per evitare di aprire discussioni già sviscerate.  ;)
E' vero di connessioni a database si è discusso abbondantemente ma non ho trovato niente che mi schiarisse
le idee riguardo il mio problema (salvo che non mi sia sfuggita).
L'esempio che mi hai postato sicuramente va bene per SQLite, che in soldoni va a vedere se esiste un "file", ma cosa
diversa e se devi controllare se esiste un DB su server MySql (almeno credo). Comunque ho provato lo stesso il tuo esempio mettendo
al posto di sPercordoDB il percorso che ho postato precedentemente (sperando che sia corretto), il risultato è, che non mi dà più
l'errore ma la risposta e che il database non esiste a prescindere che esista realmente o no. Penso che ci sia qualcosa che non funziona.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re: Controllo connessione MySql
« Risposta #3 il: 28 Ottobre 2014, 13:23:00 »
Ciao tornu,
io purtroppo di MySQL ne capisco punto come dicono in Toscana.
La routine di prima l'ho presa da questo mio esempio postato mesi fa ma non credo possa aggiungere molto.
Gli esperti di database li conosci, se vorranno aiutarti...

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Controllo connessione MySql
« Risposta #4 il: 28 Ottobre 2014, 14:01:19 »
Ciao Gianluigi,
ti ringrazio comunque per la tua sempre cortese disponibilità.
Ho comunque risolto spulciando vari esempi che ho trovato sul web, adattandoli alle mie esigenze.
Questa la soluzione che ho adottato:
Codice: gambas [Seleziona]
  Dim hConn As New Connection

   With hConn
    .Type = "mysql"
    .Host = "localhost"
    .Login = "gambas"
    .Password = "gambas"
  End With

  hConn.Open()

  If Not hConn.Databases.Exist("db_test") Then
      hConn.Close()
      hConn.Open()
      hConn.Begin()
Print "crealo"
    Else
Print "esiste"
  Endif
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: [RISOLTO] Controllo connessione MySql
« Risposta #5 il: 28 Ottobre 2014, 22:37:47 »
CiaoTornu, intervengo nella discussione solo per una precisazione.
L'istruzione hConn.Begin viene usata nel caso tu stia effettuando una 'Transazione', cioè una qualunque operazione di modifica dei dati contenuti in una tabella del DB.
Per creare un database ex-novo il codice che hai postato diviene

Codice: gambas [Seleziona]
hConn.Open()  
 
 If Not hConn.Databases.Exist("db_test") Then 
     hConn.Databases.Add("db_test")
 Endif 


Inoltre nelle impostazioni dei parametri di connessione ricorda di indicare la Porta su cui è in ascolto il server; generalmente '3306' per MySQL, ed il nome del DB a cui accedere. Nel caso specifico dovresti scrivere:
Codice: gambas [Seleziona]
Dim oConn As Connection
  With oConn = New Connection
    .Host = "localhost"
    .Port = "3306"
    .Type = "mysql"
    .Login = "username"
    .Password = "password"
    .Name = ""
  End With
  oConn.Open
  If (Not oConn.Databases.Exist("mioDB")) Then
    oConn.Databases.Add("mioDB")
  Endif
  oConn.Close
  oConn.Name = "mioDB"
  oConn.Open
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: [RISOLTO] Controllo connessione MySql
« Risposta #6 il: 29 Ottobre 2014, 02:05:45 »
Ciao sotema,
ti ringrazio per le ulteriori utili informazioni, le userò per affinare ulteriormente il mio codice.
C'è sempre da apprendere....dai migliori  :D
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re: [RISOLTO] Controllo connessione MySql
« Risposta #7 il: 29 Ottobre 2014, 18:44:26 »
Ciao sotema,
ti ringrazio per le ulteriori utili informazioni, le userò per affinare ulteriormente il mio codice.
C'è sempre da apprendere....dai migliori  :D

Sono d'accordo con te mi associo ai complimenti a sotema estendendoli anche a te che, al contrario di quanto ho detto in precedenza scusandomene, hai postato una domanda interessante.
Pochi post tanta roba grazie.
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro