PureBasic und MySQL

Anfängerfragen zum Programmieren mit PureBasic.
Schlingel
Beiträge: 30
Registriert: 28.06.2007 20:06

PureBasic und MySQL

Beitrag 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.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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.
Velz
Beiträge: 182
Registriert: 18.10.2004 22:20

Beitrag 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...
Win10/64|Ubuntu-Server|Mint WS // Programmiere Datenbankanwendungen und Tools mit PB-5.x und MySQL-5.x unter Win und Linux
Schlingel
Beiträge: 30
Registriert: 28.06.2007 20:06

Beitrag 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.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Schlingel
Beiträge: 30
Registriert: 28.06.2007 20:06

Beitrag 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?
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Schlingel
Beiträge: 30
Registriert: 28.06.2007 20:06

Beitrag 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...
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag 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 ?
Velz
Beiträge: 182
Registriert: 18.10.2004 22:20

Beitrag 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...
Win10/64|Ubuntu-Server|Mint WS // Programmiere Datenbankanwendungen und Tools mit PB-5.x und MySQL-5.x unter Win und Linux
Antworten