Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Harald Kaiser
Anmeldungsdatum: 06.05.2006 Beiträge: 16 Wohnort: Karlsruhe
|
Verfasst am: 20.05.2006, 15:28 Titel: FreeBASIC und MYSQL |
|
|
Hallo!
Wer hat Erfahrung mit Mysql und Freebasic?
Gibt es evtl. Code-Beispiele die manchmal sehr helfen?
Ich frage erst einmal ganz allgemein ohne etwas spezielles.
Gruß Harry |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
 |
max06

Anmeldungsdatum: 05.12.2004 Beiträge: 390 Wohnort: Augsburg
|
Verfasst am: 20.05.2006, 16:42 Titel: Re: FreeBASIC und MYSQL |
|
|
Harald Kaiser hat Folgendes geschrieben: | Hallo! |
Auch Hallo
Harald Kaiser hat Folgendes geschrieben: | Wer hat Erfahrung mit Mysql und Freebasic? |
Ich bin dein Mann bei Fragen zu MySQL
Harald Kaiser hat Folgendes geschrieben: | Gibt es evtl. Code-Beispiele die manchmal sehr helfen? |
Sicher gibt es Beispiele; zum Beispiel im Freebasic-Ordner in examples/mysql. Ich glaube, damit solltest du dich am Anfang auseinandersetzen, bevor ich dir ne komplette Funktion liefere
Die in den Beispielen verwendeten Funktionen findest du in inc/mysql/mysql.bi (relativ weit unten).
Harald Kaiser hat Folgendes geschrieben: | Ich frage erst einmal ganz allgemein ohne etwas spezielles. |
Ne allgemeine Antwort Aber du hast doch sicher ne Idee, wenn du MySQL verwenden willst.
Ich wünsche dir mal viel Glück und Durchhaltevermögen
Grüße
Florian
Ps: Zum Testen von MySQL Funktionen wirst du einen MySQL-Server brauchen. Quark48 kann dir da mit sicherheit weiterhelfen. Siehe seine Seite. |
|
Nach oben |
|
 |
Harald Kaiser
Anmeldungsdatum: 06.05.2006 Beiträge: 16 Wohnort: Karlsruhe
|
Verfasst am: 22.05.2006, 17:10 Titel: |
|
|
Danke für die schnellen Antworten.
Michael Frey bei deinen Links war etwas dabei was ich noch nicht gewusst habe.
Für max6189
ich möchte ein Kassenprogramm schreiben und habe dabei an MYSQL als Datenbankserver gedacht.
Läuft auch schon bei mir (localhost) und das erste select hat schon geklappt.
Was noch Probleme macht ist insert ich habe es probiert es gibt keine Fehlermeldung aber es wird nichts in die Tabelle geschrieben. Als Anweisung habe ich einen SQL-Befehl genommen, der mit dem Programm MyTab einwandfrei ging.
Es ist ganz schon umständlich die Dokumentation der C API für FB umzubauen (mal Variable mal Pointer).
Mit C habe ich noch nichts gemacht.
Gruß Harald |
|
Nach oben |
|
 |
max06

Anmeldungsdatum: 05.12.2004 Beiträge: 390 Wohnort: Augsburg
|
Verfasst am: 23.05.2006, 00:04 Titel: |
|
|
Ich könnte dir jetzt ne komplette Mysql-Routine liefern, falls du dies möchtest.
Sämtliche Mysql-Operationen werden durch diese Abgewickelt.
Beispiel:
Code: | temp=mysql("CONNECT")
variable=mysql("SELECT * FROM tabelle WHERE id=1;")
mysql("INSERT INTO tabelle (id, name) VALUES(1, "Flo");")
temp=mysql("DISCONNECT") |
Desweiteren funktioniert diese Routine einwandfrei mit Windows und Linux; das einzige Problem besteht noch beim Empfangen von mehreren Werten gleichzeitig (noch nicht getestet, dürfte aber auf Grund der Programmstrucktur unmöglich sein).
Ich werde in absehbarer Zeit diese Routine mit einem ausgedehnten Beispiel im fb@rchiv online stellen, da auch andere User (sry Sebastian, habe schon sehr lange nicht mehr in meinen email-account geschaut...) Interesse an Mysql haben
Gute Nacht,
Florian |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 23.05.2006, 08:06 Titel: |
|
|
Früher für QB publiziert:
http://beilagen.dreael.ch/QB/MYSQL.BAS
Auf dem Windows-PC muss der ODBC-Treiber von MySQL installiert sein, firewallmässig Port 3306 zwischen Linux-MySQL-Server und Windows-Rechner.
Bestimmt wird man in FreeBasic auch direkt auf die ADO (Active Data Objects)/ODBC-Schnittstelle zugreifen können, ohne wie in QB ein temporäres .VBS generieren zu müssen -> die Win32-API-Profis hier im Forum sind also gefordert. :-) _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 23.05.2006, 13:17 Titel: |
|
|
Hi,
v1ctor hat die VBScript-Nutzung per disphelper.bi vorgesehen, aber ich bin
erst zur Nutzung einer MsgBox(..) bzw. einer InputBox(..) gekommen:
http://forum.qbasic.at/viewtopic.php?t=2594
Ich würde gerne auf die WMI zugreifen, bin dort aber noch nicht erfolgreich gewesen..
An MySQL etc. kann ich nichts ausprobieren, da ich das nicht nutze.
Allerdings geht natürlich der Weg über WScript.Exe, der mir mehr liegt als CScript.Exe.
Das Skript zu erstellen ist nicht unbedingt schwer..
[Edit]
Vor Benutzung von disphelper.bi sollte diese unbedingt auf Schreibfehler geprüft werden:
http://www.freebasic.net/forum/viewtopic.php?t=2308&highlight=disphelper
v1ctor sind da wohl ein paar 'Schreibfehler' unterlaufen..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Harald Kaiser
Anmeldungsdatum: 06.05.2006 Beiträge: 16 Wohnort: Karlsruhe
|
Verfasst am: 24.05.2006, 20:00 Titel: |
|
|
Hallo max61989
Ich bin schon neugierig auf deine MSQL-Routine .
Bei meinem Programmteil klappt es nun auch mit INSERT. Ich hatte das falsche Datumsformat und vergessen, daß die Stringvariablen zusätzlich noch Anführungszeichen enthalten müssen .
Also erst einmal vielen Dank
Gruß Harry |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 24.05.2006, 20:05 Titel: |
|
|
War das n Tippfehler oder meinst du wirklich MSQL statt MySQL? Das gibts nämlich beides und es sind nicht die gleichen.. _________________ "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 |
|
 |
Harald Kaiser
Anmeldungsdatum: 06.05.2006 Beiträge: 16 Wohnort: Karlsruhe
|
Verfasst am: 24.05.2006, 20:34 Titel: |
|
|
upps war ein Tippfehler ich meinte mysql.
Gruß Harry |
|
Nach oben |
|
 |
max06

Anmeldungsdatum: 05.12.2004 Beiträge: 390 Wohnort: Augsburg
|
Verfasst am: 24.05.2006, 22:51 Titel: |
|
|
Jo, kein Problem
Aber erst morgen; erstens bin ich Hundemüde, und zweitens sitze ich grad vor der Glotze, verzeih mir
Ich werde morgen den Link zum Code hier im Forum posten,
bis dahin
Florian (Schnarchend + Streichhölzer verwendend)
EDIT: Habe nun den Code hochgeladen; müsste verständlich sein
hier[/url] |
|
Nach oben |
|
 |
Harald Kaiser
Anmeldungsdatum: 06.05.2006 Beiträge: 16 Wohnort: Karlsruhe
|
Verfasst am: 25.05.2006, 17:37 Titel: |
|
|
Hallo max61989
Deine Routine ist spitze !!
Auf die Idee die Abfrage in eine Funktion zu verpacken bin ich leider nicht gekommen genausowenig wie print_error .
Ein Vorschlag zu print_error:
Code: |
sub print_error
cls
Print "Fehlernummer: ";mysql_errno(db) ' Fehlernummer und
Print "Meldung: ";*mysql_error(db) ' MYSQL Fehlermeldung
If res <> 0 then mysql_free_result(res) ' Speicher freigeben
mysql_close( db ) ' Verbindung beenden
sleep
end(1)
end sub
|
Die Fehlermeldungen von MySQL sind meistens sehr hilfreich.
Was meinst du übrigens mit " mehreren Werten gleichzeitig empfangen"?
Ich hoffe es macht dir nichts aus wenn ich schamlos bei dir abkupfere
Gruß Harry
Zuletzt bearbeitet von Harald Kaiser am 30.05.2006, 12:18, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
max06

Anmeldungsdatum: 05.12.2004 Beiträge: 390 Wohnort: Augsburg
|
Verfasst am: 25.05.2006, 18:18 Titel: |
|
|
Harald Kaiser hat Folgendes geschrieben: | Deine Routine ist spitze !! |
Thx
Also bei mysql_error(db) kam bei mir meistens ne ziemlich lange Zahlenkombi raus, aber kein Text. Mit dieser Zahl konnte ich rein gar nix anfangen; die Fehlernummer ist aufschlussreicher
Oha, hab ich etwas das mysql_free_result vergessen? Ausgerechnet das, was mir schon mal arge Kopfschmerzen bereitet hat? Werde ich sofort nachholen, versprochen
Es gibt ne Abfrage in der Form: SELECT nick FROM user
welche sämtliche Nicks aus dieser Tabelle anzeigt. In einem php-script würden diese Werte in nem Array gespeichert werden, die Funktion hat aber nur einen Rückgabewert...
Harald Kaiser hat Folgendes geschrieben: | Ich hoffe es macht dir nichts aus wenn ich schamlos bei dir abkupfere |
Dafür hab ich die Funktion ja online gestellt, oder?
Viele Grüße und viel Spaß mit MySQL
Florian |
|
Nach oben |
|
 |
Harald Kaiser
Anmeldungsdatum: 06.05.2006 Beiträge: 16 Wohnort: Karlsruhe
|
Verfasst am: 25.05.2006, 18:44 Titel: |
|
|
Hallo max61989
Die ziemlich lange Zahl ist ein Pointer auf den Text darum der *.
Das mit den Pointern hat mich seeeehr viel Zeit gekostet. das war auch ein Grund dafür, daß ich von C die Finger gelassen habe zum Beispiel Pointer auf Pointer war mir einfach zu verpointert.
Das mit dem Rückgabewert glaube ich gefunden zu haben:
Code: |
dim shared res as MYSQL_RES ptr ' Zeiger auf das Resultat
dim Aktuelle_Zeile as MYSQL_ROW ' Array auf die Spalteninhalte
dim mysql_ergebnis as integer ' Rückgabewert einer MYSQL-Funktion 0 = Fehler, nicht 0 = OK
dim query as string: query="SELECT * FROM journal" ' Das SQLstatement
'** Die Abfrage
if mysql_real_query(db, query, len(query)) <> 0 then MySql_Fehler
res = mysql_store_result( db ) ' Ergebnis der Abfrage vom Server
'** Auf die Werte in den Spalten zugreifen
dim Anz_Zeilen as longint ' Zeilenzahl der Abfrage kann riesig sein
dim Anz_Spalten as integer ' Anzahl der Spalten
dim Spaltenstr as MYSQL_FIELD ' Struktur der Felder
dim as integer i,j
Anz_Zeilen = mysql_num_rows(res) ' Gesamtzahl der Zeilen holen
Anz_Spalten = mysql_num_fields(res) ' Die Spaltenzahl holen
Aktuelle_Zeile = mysql_fetch_row(res) ' Die erste Zeile des Resultats
'** und anzeigen
for j = 1 to Anz_Zeilen
print "Satz ";j
for i = 0 to Anz_Spalten-1
Spaltenstr = *mysql_fetch_field_direct(res,i) ' Struktur de rSpalte
print *Spaltenstr.name;"= ", ' Spaltennamen und
print *Aktuelle_Zeile[i] ' Spalteninhalte ausgeben
next i
Aktuelle_Zeile = mysql_fetch_row(res) ' Eine Zeile geht noch
next j
'** Gibt den Speicherplatz des Resultates wieder frei
mysql_free_result(res)
print "Speicher des Resultates von SELECT freigegeben"
|
Gruß Harry[/code]
Zuletzt bearbeitet von Harald Kaiser am 25.05.2006, 20:09, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 25.05.2006, 19:37 Titel: |
|
|
Harald sei so gut und schreib um deinen code, dann kann man ihn besser erkennen und lesen  _________________ "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 |
|
 |
Harald Kaiser
Anmeldungsdatum: 06.05.2006 Beiträge: 16 Wohnort: Karlsruhe
|
Verfasst am: 25.05.2006, 20:06 Titel: |
|
|
THX
Ich habe gesehen, daß der Code unformatiert ist obwohl ich ihn formatiert abgesendet habe.
Danke für den Tipp.
Du passt ziemlich auf das ich nichts falsch mache
Harry |
|
Nach oben |
|
 |
Harald Kaiser
Anmeldungsdatum: 06.05.2006 Beiträge: 16 Wohnort: Karlsruhe
|
Verfasst am: 25.05.2006, 20:10 Titel: |
|
|
Holla
sieht doch viel besser aus.  |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 25.05.2006, 20:12 Titel: |
|
|
ich hab nur gesehen dass da mal wieder jemand den code-tag vergessen hat und habs halt geschrieben, hilft glaub ich jedem  _________________ "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 |
|
 |
Harald Kaiser
Anmeldungsdatum: 06.05.2006 Beiträge: 16 Wohnort: Karlsruhe
|
Verfasst am: 25.05.2006, 20:42 Titel: |
|
|
mir hats geholfen habs nicht gekannt. |
|
Nach oben |
|
 |
|