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:
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?
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:
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
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:
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
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
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:
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