In het algemeen zijn er 2 mogelijkheden:
- hDB.Exec(…) waarin gewone SQL statements worden gebruikt; komen terug via resultset.
- gebruik van Gambas database functies
Hier met MySQL db op locale server dbserver en database “gambase”
PUBLIC db AS NEW Connection PUBLIC FUNCTION mkdbconnection AS Boolean db.close db.Type = "mysql" db.Name = "gambase" db.Host = "dbserver.iglo.loc" db.Login = "gambasapp" db.Password = "echtpassw" db.Open RETURN TRUE CATCH Message.error("Mislukte DB verbinding: " & error.text) addLog(error.Text) RETURN FALSE END
Programma tegelijk gebruiken op een “test” databank en een “productie” databank door inbouwen van een schakelaar:
PUBLIC db AS NEW Connection PUBLIC FUNCTION mkdbconnection(inProduction AS Boolean) AS Boolean IF (inProduction = TRUE) THEN db.close db.Type = "mysql" db.Name = "gambase" db.Host = "dbserver.iglo.loc" db.Login = "gambasapp" db.Password = "echtpassw" db.Open RETURN TRUE ELSE db.close db.Type = "mysql" db.Name = "testdb" db.Host = "dbserver.iglo.loc" db.Login = "gambasapp" db.Password = "2test" db.Open RETURN TRUE ENDIF CATCH Message.error("Mislukte DB verbinding: " & error.text) addLog(error.Text) RETURN FALSE END
PUBLIC rsDevice AS Result
…
Databankopvraging:
Gebruik parameters met &nummer om waarden door te geven:
DIM sSql AS String DIM resResult AS Result sSql = "SELECT * FROM db WHERE fieldname1 LIKE &1 AND fieldname2 LIKE &2" resResult = $hConnection.Exec(sSql, fieldvalue1 & "%", fieldvalue2 & "%")
Resultaat van databankopvraag verwerken:
IF resResult FOR EACH resResult cmbxResults.Add(resResult!recordfield) NEXT RETURN TRUE ELSE RETURN FALSE ENDIF
Aanhalingstekens in MySQL query
upd 20081209
Gebruik DB.Quote:
hDB.Exec("SELECT text FROM " & DB.Quote(sTable) & " ORDER BY rand() LIMIT1")
Aanpassen van waarden in de databank tabel
upd 20081209
Met Gambas databank functies als $hConn.Edit
sCriteria = "id = &1" iParameter = 1012 $hConn.Begin hResult = $hConn.Edit("tblDEFAULT", sCriteria, iParameter) ' Set field value hResult!Name = "Mr Smith" ' Update the value hResult.Update $hConn.Commit
Itt volle sql commando’s als in
sNewVal = "Mr Smith" $hConn.Exec("UPDATE tblDEFAULT set Name=&1 WHERE id = &2", sNewVal, iParameter)