Seite 1 von 3
PureBasic und MySQL
Verfasst: 28.06.2007 20:13
von Schlingel
Hallo,
habe MySQL 5.0 und Purebasic 4.x und den ODBC von MySQL runtergeladen.
Da ich in diesem Forum schon gesucht habe, habe ich folgendenen Code gefunden:
Code: Alles auswählen
; MySQL beispiel von PAMKKKKK 02.August.2005
; braucht die Userlib MDB_lib von Paul Leishow!
; Kompelieren mit Debugger
hSQL=SQL_Connect("127.0.0.1","easpro","root","root")
; www.meinehomepage.de = Adresse des Servers wo die MySQL Datenbank ist (kann auch eine IP sein)
; DatenbankName = Name der MySQL Datenbank die geöffnet werden soll
; DB_UserName = Benutzername der auf die MySQL Datenbank zugreifen darf
; DB_UserPasswort = Passwort des MySQL Benutzers
If hSQL
Debug "Database has been opened"
Else
Debug "Unable to open Database"
End ; kein Datenbank connect und ende
EndIf
; nun kann man die Datenbank mit den Purebasic befehlen bearbeiten
If DatabaseQuery("SELECT * FROM 'news';") ; Hier muss man die Datenbanksprache SQL können !
While NextDatabaseRow()
Spalte1.s =GetDatabaseString(0) ; Feldinhalt von Spalte 1
Spalte2.s =GetDatabaseString(1) ; Feldinhalt von Spalte 2 usw....Spalte3 usw...
Debug "Abfrage = " + Spalte1 + ";" + Spalte2
Wend
EndIf
CloseDatabase(hSQL) ; Datenbank immer Ordentlich schliessen!!
Habe mir die MDB_lib mal runtergeladen aber der Compiler spuckt nun bei diesem Quelltext eine Fehlermeldung das SQL_Connect() keine Function ist.
Da das Beispiel von 2005 ist vermute ich das es ein wenig unaktuell ist...
Darum wollte ich fragen wie ich auf MySQL zugreifen kann oder ob es alternative Zugriffsarten gibt ohne erst viel Aufwand zu betreiben.
Verfasst: 28.06.2007 20:15
von edel
Wenn die Lib zu alt ist muesstest du einen anderen Fehler bekommen,
tippe mal eher darauf das du sie nicht richtig installiert hast.
Verfasst: 28.06.2007 20:20
von Velz
Hei...
der einfachste weg ist über odbc.
in der Boardsuche "mysql odbc" eingeben und es kommt mehr als du lesen möchtest. auch im Archiv gibt es viele Beispiele.
Du mußt den odbc-Treiber und mysql installieren und kannst mit standard PB Befehlen zugreifen.
Fang einfach mal an... bei Fragen... fragen...
Verfasst: 29.06.2007 13:36
von Schlingel
Also finden tut die Suche genug...
Der ODBC Treiber ist ja schon installiert aber was ich eigentlich suche ist eine Funktion wie InitDatabase() nur das ich dort als Parameter die Treiberdaten bzw. die Datenbankart angeben kann. Z.B. InitDatabase("MySQL). So ungefähr...
Bin mir jetzt nicht sicher ob irgendwo schon im Forum eine fertige selbstgeschriebene Funktion existiert da es bei zuviel Theard mir doch zu unübersichtlich ist...
Code: Alles auswählen
InitDatabase()
db_edriver.l
db_ndriver.l
text.s
OpenConsole()
db_edriver = ExamineDatabaseDrivers()
db_ndriver = NextDatabaseDriver()
text = DatabaseDriverName()
Print(Str(db_ndriver))
Print(text)
Delay(3000)
CloseConsole()
Habe schon gestern bevor ich den Theard schrieb einfach mir mal die Befehle angeschaut. Kann ich nun irgendwo quasi meinen Datenbanktreiber nicht hinschreiben und wenns in ner Form von einer ID ist. Mit OpenDatabaseRequester(0) erhalte ich auch dieses Fenster und kann den MySQL ODBC Treiber auswählen doch ich will den nicht jedes mal mit Fenster auswählen.
In der Hilfe von PureBasic steht ja relativ wenig zu den Funktionen aber kann ich nicht mit NextDatabaseDriver() den für MySQL auswählen ?
P.S.: Das ist erst mein zweites "Programm" was ich in PureBasic schreibe das erste war auch nur das aus dem Einstiegstutorial vor ca. 2 Jahren.
Verfasst: 29.06.2007 17:49
von bobobo
opendatabase() ist letztlich funktional der
opendatabaserequester() nur ohne interaktivität
du brauchst dafür den namen der ODBC verknüpfung
und vorher ein initdatabase()
guck dir mal die PB-Hilfe bezgl. der Database Geschichte
nochmal genau an.
Da findest u.a. du auch ein ProgrammDemo, welches
allerdings wiederum den requester für die Datenbank
benutzt. Häkel Dir das Ding mal um so dass statt dem
requester das opendatabase(..) steht
Verfasst: 29.06.2007 18:26
von Schlingel
Daraus konnte ich kaum etwas hilfreiches für mich finden....
Aber gut das mit den OpenDatabase() ist mir schon klar das dieses Ding letztendlich da stehen muss, wohl logisch oder....
Jetzt meckert er letztendlich am Befehl OpenDatabase rum...
#db_driver = "MySQL"
OpenDatabase("easypro",#db_driver,"root","root")
Hier meckert er das er ne Nummer will, da bei vielen Beispielen ne 0 beim ersten Parameter steht vermute ich das dort der Fehler liegt.
Doch woher weiß ich welche Zahl für meine Datenbank steht?
Verfasst: 29.06.2007 18:37
von bobobo
alles halb so wild
aus der Hilfe
Ergebnis = OpenDatabase(#Datenbank, ODBCDatenbankName$, Benutzer$, Passwort$)
die Parameterreihenfolge ist schon etwas wichtig
die Nummer [.. hier #Datenbank (ne Konstante welche
Du vorher definieren musst) (du kannst aber auch
einfach eine 0 statt #Datenbank eintragen)]
ist zum späteren Ansprechen der Datenbank mit den
PB-Datenbank-Funktionen gedacht, für nichts anderes.
also opendatabase(#Datenbank,...usw)
und später dann mal
Ergebnis = DatabaseQuery(#Datenbank, Abfrage$)
noch später dann mal
CloseDatabase(#Datenbank)
--
und nun hab ich WochenEnde
Verfasst: 29.06.2007 18:38
von Schlingel
aha
lol
Ich glaube ich weiß nun was es heißt "Blind" durch die gegend zu laufen...
-.-
Okay bin mit der Datenbank verbunden...
Dachte nur das ODBC auch mehre Datenbanken zulässt bzw. ich das mit einer Benutzer DNS hinbekomme... darum habe ich die Datenbank in diesem ODBC Fenster rausgelöscht. In der Hoffnung das ich das mit PB flexibler gestalten kann. Halt ähnlich wie bei PHP...
Find das trotzdem ziemlich umständlich...
Verfasst: 30.06.2007 03:53
von Bisonte
Ich hab da aber nun ein anderes problem... :
um
OpenDatabase(#Datenbank, ODBCDatenbankName$, Benutzer$, Passwort$)
zu benutzen, muss ich per ODBC 3.51 Driver die Datenbank schon einrichten.
Macht aber wenig Sinn, wenn ich das Programm weitergeben will und dann auch noch Passwort und Username der Datenbank preisgeben muss....
Kann man das irgendwie umgehen ?
Die variante mit der dll und direktzugriff klappt seltsamerweise nur 2-3 DBZugriffe und danach schmiert das programm mit einer speicherverletzung ab.... (Aus Codearchiv das beispiel.)
Kann man also irgendwie den ODBC Username/Passwort Krams umgehen ohne die dll zu benutzen ?
Verfasst: 30.06.2007 10:08
von Velz
Aber sicher geht das....
Beispiel gibt es bei Purearea im Codearchiv.....
habe nicht reingeschaut.. aber es müßte das MSSQL_ODBC-DSN_on-the-fly.pb
sein...
oder aber über die Verwendung der libmysql... fuktioniert auch hervorragend.. aber ist etwas komplexer als mit odbc...