 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Maestro

Anmeldungsdatum: 04.04.2006 Beiträge: 18
|
Verfasst am: 26.04.2006, 14:44 Titel: MySQL korrekt ansprechen... |
|
|
Hallo zusammen,
mag mir mal jemand aufdröseln, wie ich mit fb korrekt eine mysql-db mit passwort, user und dem ganzen zeug anspreche - ich werden aus dem Beispiel nicht schlau.
das dort verwendete Code: | ( mysql_real_connect( db, NULL, NULL, NULL, NULL, MYSQL_PORT, NULL, 0 ) | stellt sich mir so dar, als würde die angesprochene db ohne das auskommen...
Help!
lg Martin |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 26.04.2006, 16:13 Titel: |
|
|
jo, der meldet sich einfach ohne benutzer, passwort und zeug an nicht jeder db-server hat aktive benutzerverwaltung, wenn die URL auch als NULL übergeben wurde wird vermutlich localhost als ServerURL genommen, NULL heißt entweder "nichts" oder teilweise auch "standard".
schau einfach mal ob du in der mysql-referenz die einzelnen funktionen der parameter findest, das dürfte dir helfen. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
max06

Anmeldungsdatum: 05.12.2004 Beiträge: 390 Wohnort: Augsburg
|
Verfasst am: 26.04.2006, 16:21 Titel: |
|
|
Hast du schon mal was mit Mysql in Verbindung mit FB gemacht? Wenn nicht, kann ich dir helfen, das ist mein Spezialgebiet (auch wenn mich gewisse Personen deswegen auslachen ). Ich habe mir extra eine funktion geschrieben, die den Datenbank-Zugriff übernimmt. Die kannst du haben, sie wird dir sicher zum Verstehen helfen.
Grüße
Florian
EDIT: Ach ja: die Freebasic/inc/mysql/mysql.bi ist sehr hilfreich  |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 26.04.2006, 16:26 Titel: |
|
|
keiner lacht dich aus weil mysql dein spezialgebiet is *g* _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
max06

Anmeldungsdatum: 05.12.2004 Beiträge: 390 Wohnort: Augsburg
|
Verfasst am: 26.04.2006, 16:43 Titel: |
|
|
Okay, nicht, weil es mein Spezialgebiet ist, sondern weil ich es verwende  |
|
Nach oben |
|
 |
Maestro

Anmeldungsdatum: 04.04.2006 Beiträge: 18
|
Verfasst am: 26.04.2006, 16:46 Titel: |
|
|
Danke für die schnellen Antworten!
mysql.bi hat Folgendes geschrieben: | declare function mysql_real_connect alias "mysql_real_connect" (byval mysql as MYSQL ptr, byval host as zstring ptr, byval user as zstring ptr, byval passwd as zstring ptr, byval db as zstring ptr, byval port as uinteger, byval unix_socket as zstring ptr, byval clientflag as uinteger) as MYSQL ptr |
...will also heißen, dass die Parameter in der Reihenfolge:
DBName(?),
url,
DBuser,
DBpassword,
(nochmal DBName?),
DBPort,
Socket (was auch immer da reinsoll),
clientflags (auch da keine Ahnung, was reinsoll)
sind?
Ich brauche das ziemlich genau, weil meine DB-Server aus sicherheitsgründen nicht mit den Defaulteinstellungen laufen.
ich komme aus dem Php-Lager, sodass mir die ein-oder andere Terminologie nicht geläufig ist.
@Florian: Dein Angebot würde ich gern annehmen, das Beispiel ist leider zu rudimentär, um für so einen, wie mich nützlich zu sein - sollte man mal komplettieren
lg Martin |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 26.04.2006, 17:05 Titel: |
|
|
max61989 hat Folgendes geschrieben: | Okay, nicht, weil es mein Spezialgebiet ist, sondern weil ich es verwende  |
Nein, auch nicht, wofür du das verwendest, lachen wir^^
 |
|
Nach oben |
|
 |
max06

Anmeldungsdatum: 05.12.2004 Beiträge: 390 Wohnort: Augsburg
|
Verfasst am: 26.04.2006, 17:06 Titel: |
|
|
Das ist jetzt mal die schnell rauskopierte funktion aus meinem Programm:
Code: |
option explicit
#INCLUDE once "mysql/mysql.bi"
#define NULL 0
declare function mysql (query as string) as string
declare sub print_error
dim shared db as MYSQL ptr : db = mysql_init( NULL )
dim shared db_host as string : db_host = "dein host"
dim shared db_user as string : db_user = "dein DB-Benutzer"
dim shared db_passwrd as string : db_passwrd = "dein DB-Passwort"
dim shared db_database as string : db_database = "die zu verwendende Datenbank"
dim shared res as MYSQL_RES ptr
dim shared row as MYSQL_ROW
dim shared as string ergebnis
ergebnis=mysql("CONNECT") 'zum Verbinden
ergebnis=mysql("DISCONNECT") 'zum trennen
function mysql (query as string) as string
dim mysql_ergebnis as string
select case left$(query, 6)
case "CONNEC"
print "Verbindung wird hergestellt"
if( mysql_real_connect( db, db_host, db_user, db_passwrd, db_database, MYSQL_PORT, NULL, 0 ) = 0 ) then
print "Es konnte leider keine Verbindung zum Datenserver aufgebaut werden."
print "Bitte versuchen sie es spaeter nochmal."
print_error
mysql_close( db )
end
else
print "Verbindung zum Datenserver hergestellt."
end if
print "Datenbank wird ausgewaehlt"
IF( mysql_select_db( db, db_database ) < 0 ) then
print "Verbindung zur Datenbank konnte leider nicht korrekt aufgebaut werden."
print "Bitte versuchen Sie es spaeter nochmal."
print_error
mysql_close( db )
end
else
print "Verbindung zur Datenbank aufgebaut."
end if
case "UPDATE"
if mysql_query(db, query)<>0 then
print_error
end if
mysql_ergebnis="0"
case "INSERT"
if mysql_query(db, query)<>0 then
print_error
end if
mysql_ergebnis="0"
case "SELECT"
mysql_query(db, query)
res = mysql_store_result( db )
row = mysql_fetch_row( res )
if row<>0 then
mysql_ergebnis=*row[0]
else
mysql_ergebnis="0"
end if
case "DELETE"
mysql_query(db, query)
case "DISCON"
mysql_close(db)
case else
mysql_ergebnis="Sorry, aber keine Aktion verknuepft..."
end select
return mysql_ergebnis
end function
sub print_error
print ""
print " Fehler: "; mysql_errno( db )
print ""
mysql_close(db)
sleep
end
end sub
|
In der funktion mysql siehst du alle Möglichen Aktionen, mehr habe ich noch nicht. Beim Auslesen kannst du immer nur einen Wert auslesen, also eine komplette Tabelle rauszuziehen habe ich noch nicht fertig.
bei dem Aufruf muss die Groß- und Kleinschreibung unbedingt beachtet werden, der Query ist genauso aufgebaut, wie in php. Nicht das ; am ende des queries vergessen... dass gibt Fehler, die man sehr oft übersieht... und FB meckert bei diesen nicht...
Grüße
Florian |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 27.04.2006, 09:01 Titel: |
|
|
Ich hatte früher einmal eine QB-Lösung veröffentlicht:
http://beilagen.dreael.ch/QB/MYSQL.BAS
Grundbasis dort: Ich verwende den ODBC-Treiber und greife via ADO (Active Data Objects; typisches Microsoft-API) auf die MySQL-Datenbank zu, die z.B. auf einem Linux-Server oben läuft.
In FreeBasic kann man vermutlich all die dort in der dynamisch generierten VBScript-Routine getätigten WinAPI-Aufrufe direkt aufrufen, so dass die Umwege über temporäre Datei entfallen. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|