freepascal, unit mysql
freepascal, unit mysql
Ich habe mir freepascal - ich glaube, nicht als deb, installiert - für etch gibts das wohl nicht und die von freepascal als deb angebotenen Pakete waren mindestens 10. Das war mir zu blöd.
Die im Betreff genannte unit habe ich nur als ppu. Es wäre natürlich schon einigermaßen hilfreich, wenn man wüsste, welche Prozeduren und Funktionen in der im Betreff genannten Unit drin stecken. Jemand eine Idee, wie ich das finde? Warum liefern die keinen Quellcode? Oder ist der hier irgendwo und ich weiß nicht wo?
Grüße, Günther
Die im Betreff genannte unit habe ich nur als ppu. Es wäre natürlich schon einigermaßen hilfreich, wenn man wüsste, welche Prozeduren und Funktionen in der im Betreff genannten Unit drin stecken. Jemand eine Idee, wie ich das finde? Warum liefern die keinen Quellcode? Oder ist der hier irgendwo und ich weiß nicht wo?
Grüße, Günther
-
- Beiträge: 18
- Registriert: 24.03.2008 15:13:37
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: NRW
Re: freepascal, unit mysql
Doch, deb-Pakete gibt es sehr wohl für Etch. Beispielsweise ist fp-compiler der Paketname für den Compiler. Und wieso sind dir deb-Pakete zu blöd? Eigentlich sind doch gerade deb's sehr praktisch für Debianer
Re: freepascal, unit mysql
Es wäre schön, wenn du etwas zu meinen Fragen bezüglich der unit mysql sagen könntest.
Grüße, Günther
Grüße, Günther
Re: freepascal, unit mysql
Hallo,
Des weiteren gibt es eine Dokumentation http://www.freepascal.org/docs.var
und eine Suche nach mysql bei denen http://community.freepascal.org:10000/s ... l&t=Search hat deutlich über 500 Treffer.
Also Günther, geb dir mal etwas mehr Mühe und heule hier nicht rum, wenn eine gut gemeinte Hilfe nicht deinen Erwartungen entspricht.
gruss neuss
Bei http://sourceforge.net/project/showfile ... up_id=2174 ist er doch zu finden.guennid hat geschrieben:Warum liefern die keinen Quellcode? Oder ist der hier irgendwo und ich weiß nicht wo?
Des weiteren gibt es eine Dokumentation http://www.freepascal.org/docs.var
und eine Suche nach mysql bei denen http://community.freepascal.org:10000/s ... l&t=Search hat deutlich über 500 Treffer.
Also Günther, geb dir mal etwas mehr Mühe und heule hier nicht rum, wenn eine gut gemeinte Hilfe nicht deinen Erwartungen entspricht.
gruss neuss
stell dir vor, es geht, und keiner kriegt es hin.
Re: freepascal, unit mysql
Ach Neuss,
ich kann nicht sehen, wieso ich hier "geheult" hätte. Ich glaube ich habe eine ziemlich klare Frage gestellt, auf die ich keine Antwort bekommen habe. Wenn ich auf diese Frage nochmal (kommentarlos!) hinweise, kann ich das nicht als Heulen werten.
Ich habe nicht gesagt, dass mir debs zu blöd sind, sondern nur dass mir die Installation von ca.10 debs die nicht von debian stammen und von denen ich wenig bis nichts weiß, wofür die gut sind, zu blöd war.
Wenn du allerdings der Meinung bist, man dürfe hier nur in der Haltung der Proskynese Fragen stellen, dann werde ich das trotzdem nicht tun. threads die man nicht mag, kann man meiden!
Zur Sache:
Dass ich freepascal auch unter etch bekomme, habe ich nun mitgekriegt. Danke an frapo für den Hinweis.
Von deinem ersten Link habe ich mein pascal gezogen. Ich hab's nochmal gemacht und ich finde dort immer noch keinen Quelltext zur mysql-unit.
Der zweite Link war mir bekannt, von daher wusste ich, dass es die unit gibt.
Die 584 Links in der 3. Adresse habe ich nicht alle geprüft, die die ich mir angesehen habe, geben zu meinem Problem keine Auskunft. Einige (etwas angestaubte von 2002 - 2004) betonen, dass keine Doku existiert. Ich hoffe, wenigstens in die Nähe dessen gekommen zu sein, was du unter "ein wenig Mühe" verstehst.
Grüße, Günther
ich kann nicht sehen, wieso ich hier "geheult" hätte. Ich glaube ich habe eine ziemlich klare Frage gestellt, auf die ich keine Antwort bekommen habe. Wenn ich auf diese Frage nochmal (kommentarlos!) hinweise, kann ich das nicht als Heulen werten.
Ich habe nicht gesagt, dass mir debs zu blöd sind, sondern nur dass mir die Installation von ca.10 debs die nicht von debian stammen und von denen ich wenig bis nichts weiß, wofür die gut sind, zu blöd war.
Wenn du allerdings der Meinung bist, man dürfe hier nur in der Haltung der Proskynese Fragen stellen, dann werde ich das trotzdem nicht tun. threads die man nicht mag, kann man meiden!
Zur Sache:
Dass ich freepascal auch unter etch bekomme, habe ich nun mitgekriegt. Danke an frapo für den Hinweis.
Von deinem ersten Link habe ich mein pascal gezogen. Ich hab's nochmal gemacht und ich finde dort immer noch keinen Quelltext zur mysql-unit.
Der zweite Link war mir bekannt, von daher wusste ich, dass es die unit gibt.
Die 584 Links in der 3. Adresse habe ich nicht alle geprüft, die die ich mir angesehen habe, geben zu meinem Problem keine Auskunft. Einige (etwas angestaubte von 2002 - 2004) betonen, dass keine Doku existiert. Ich hoffe, wenigstens in die Nähe dessen gekommen zu sein, was du unter "ein wenig Mühe" verstehst.
Grüße, Günther
Re: freepascal, unit mysql
Hallo,
gruss neuss
Also wenn ich mir die Sourcen von dort ansehe, ist da der Ordner fpc-2.2.0/packages/base/mysql in dem alles zu finden ist.guennid hat geschrieben:Von deinem ersten Link habe ich mein pascal gezogen. Ich hab's nochmal gemacht und ich finde dort immer noch keinen Quelltext zur mysql-unit.
Ich finde diese Auskunft sehr hilfreich: http://community.freepascal.org:10000/b ... 086#149687guennid hat geschrieben:Die 584 Links in der 3. Adresse habe ich nicht alle geprüft, die die ich mir angesehen habe, geben zu meinem Problem keine Auskunft.
Nehme es mir nicht böse, aber von jemanden der in einer bestimmten Sprache ein Datenbankfrontend schreiben möchte, erwarte ich halt mehr. Insbesondere wenn er schon so lange dabei ist wie du.guennid hat geschrieben:Ich hoffe, wenigstens in die Nähe dessen gekommen zu sein, was du unter "ein wenig Mühe" verstehst.
gruss neuss
stell dir vor, es geht, und keiner kriegt es hin.
Re: freepascal, unit mysql
Ich bin kein Insider. Ich hab's mehr mit Deutsch und Geschichte. Das Einzige, was ich edv-mäßig kann, ist pascal.
Ich hätte auf der sourceforge-Seite weiter nach unten scrollen sollen. Dort habe ich mittlerweile den gesamten Quellcode gefunden und dort scheint auch die Unit im Quellcode vorzuliegen.
Den von dir zuletzt genannten Ordner finde ich nicht. Wäre nett, wenn du mir den kompletten Pfad nennen könntest, ich möchte ihn trotzdem checken.
Grüße, Günther
Ich hätte auf der sourceforge-Seite weiter nach unten scrollen sollen. Dort habe ich mittlerweile den gesamten Quellcode gefunden und dort scheint auch die Unit im Quellcode vorzuliegen.
Den von dir zuletzt genannten Ordner finde ich nicht. Wäre nett, wenn du mir den kompletten Pfad nennen könntest, ich möchte ihn trotzdem checken.
. Ich weniger, wenn dort steht:neuss hat geschrieben:Ich finde diese Auskunft sehr hilfreich: http://community.freepascal.org:10000/b ... 086#149687
There is no pascal specific documentation. The mysql unit provides a simple translation to pascal of the C mysql.h header file. ...
Mal schauen, ob ich da durchsteige. Je näher ich mich mit mysql beschäftige, um so weniger gefällt mir das. - Aber ich glaube, ich habe keine andere Wahl.... You can use any manual of MySQL to use the pascal unit. All calls are exactly as they are for the C programmers
Grüße, Günther
Re: freepascal, unit mysql
Zur Veranschaulichung habe ich mal sowohl fpc-2.2.0.source.tar.gz als auch fpcbuild-2.2.0.tar.gz entpackt.guennid hat geschrieben:Den von dir zuletzt genannten Ordner finde ich nicht.
Code: Alles auswählen
# find . -name mysql
./fpcbuild-2.2.0/fpcsrc/packages/base/mysql
./fpcbuild-2.2.0/fpcsrc/packages/fcl-db/src/sqldb/mysql
./fpc-2.2.0/packages/base/mysql
./fpc-2.2.0/packages/fcl-db/src/sqldb/mysql
Da ist aber auch noch ein Link, der dich unter anderem dorthin führt:guennid hat geschrieben:Ich weniger, wenn dort steht: ...neuss hat geschrieben:Ich finde diese Auskunft sehr hilfreich: http://community.freepascal.org:10000/b ... 086#149687
http://lazarus-ccr.sourceforge.net/inde ... _text_mode
gruss neuss
stell dir vor, es geht, und keiner kriegt es hin.
Re: freepascal, unit mysql
Code: Alles auswählen
$(FreePascal_directory)/packages/base/mysql/
Grüße, Günther
Re: freepascal, unit mysql
Steht doch schon in meinem letzten Post, sogar incl. Suchbefehl.
Wie hast du denn die Sourcen entpackt, vielleicht ist da ja schon was grundlegend falsch gelaufen.
gruss neuss
Wie hast du denn die Sourcen entpackt, vielleicht ist da ja schon was grundlegend falsch gelaufen.
Code: Alles auswählen
tar -xf fpc-2.2.0.source.tar.gz
stell dir vor, es geht, und keiner kriegt es hin.
Re: freepascal, unit mysql
. Ich hab's jetzt gefunden: Ich habe mir 'n Wolf gesucht auf der homepage von frepascal. Ich habe nicht mitgekriegt, dass du den tar-ball meintest.neuss hat geschrieben:Wie hast du denn die Sourcen entpackt, vielleicht ist da ja schon was grundlegend falsch gelaufen.
Entpackt habe ich die gar nichtmehr, ich will mir die nur anschauen, da ich davon ausgehe, dass meine ppus für's Entwickeln reichen. Aber ich muss natürlich wissen, was drin steht.
Darf ich dich weiter mit Fragen belästigen?
Meine mysql-Version ist 5.0.32. Sehe ich recht, dass ich die mysql-lib "libmysqlclient" irgendwie in fp bekanntmachen muss? Wie geht das?
Grüße, Günther
Re: freepascal, unit mysql
Das darfst du natürlich, aber ob ich dir bei Details weiterhelfen kann bezweifle ich. Ich verwende Free Pascal nicht, genau genommen habe ich seit 20 Jahren nichts mehr mit Pascal zu tun gehabt.guennid hat geschrieben:Darf ich dich weiter mit Fragen belästigen?
Da würde ich entsprechend, wie in dem von mir bereits oben erwähnten Link beschrieben vorgehen.guennid hat geschrieben:Sehe ich recht, dass ich die mysql-lib "libmysqlclient" irgendwie in fp bekanntmachen muss? Wie geht das?
Für Etch sollte das dann,
Code: Alles auswählen
ln -s /usr/lib/libmysqlclient.so.15.0.0 /usr/lib/libmysqlclient.so
gruss neuss
stell dir vor, es geht, und keiner kriegt es hin.
Re: freepascal, unit mysql
Mann, Mann, das ist vielleicht ein Gewürge!!!
Das meiste davon habe ich hinbekommen, nur nicht: "GRANT ALL ON testdb TO johnny-user IDENTIFIED BY 'johnnyspassword';" weder mit 1:1 abschreiben, noch durch Ersetzen von "johnny-user" nebst Passwort durch meinen mysql-root (einen anderen user habe ich nicht kreiert).
Links auf libmysqlclient.so.15.0.0 habe ich gesetzt, und zwar libmysqlclient und libmysqlclient.so. Der Pfad wurde in /etc/fpc.cfg aktiviert.
Bei
Das hier ließ sich immerhin kompilieren: Wobei ich wenig bis keine Ahnung habe, was ich da tue.
Grüße, Günther
Code: Alles auswählen
CREATE DATABASE testdb;
then make sure that all relevant users have appropriate access privileges to it
GRANT ALL ON testdb TO johnny-user IDENTIFIED BY 'johnnyspassword';
There is a script called mkdb which you should now try to run:
sh ./mkdb
This will probably fail, as the system will not allow an anonymous user to access the database. So change the script using an editor so that the line invoking mysql reads:
mysql -u root -p ${1-testdb} << EOF >/dev/null
and try running it again, entering your password when prompted. With luck you might have managed to create the test database: test it (while logged in to the mysql monitor) by issuing the mysql statement
select * from FPdev;
You should see a table listing the ID, username and email address of some of the FPC developers.
Links auf libmysqlclient.so.15.0.0 habe ich gesetzt, und zwar libmysqlclient und libmysqlclient.so. Der Pfad wurde in /etc/fpc.cfg aktiviert.
Bei
ist Schluss. Das Ding lässt sich nicht kompilieren. Wenn ich die Unit mysql4 einbinde (ich habe doch 5.0.12?), dann kennt er einige Befehle weiter unten nicht, wenn ich mysql50 einbinde, kennt er den Typ "TMYSQL" nicht.Now try to run the test program testdb.pp
Das hier ließ sich immerhin kompilieren:
Code: Alles auswählen
PROGRAM mytest1;
USES CRT,mysql4;
VAR
sock : PMYSQL;
qmysql : TMYSQL;
BEGIN
mysql_init(PMYSQL(@qmysql));
sock := mysql_real_connect(PMYSQL(@qmysql),'localhost','[mysql-root-name]','[mysql-root-passwort]','buecher',0,'',0);
END.
Grüße, Günther
Re: freepascal, unit mysql
Es hat mir ja keine Ruhe gelassen, also habe ich es mal für dich durchprobiert.
Zum testen habe ich einfach mal einen Benutzer ohne Passwort angelegt
und in testdb4.pp diese Zeile geändert.
Und siehe da, es lies sich mit ein paar Bemerkungen kompilieren und hat zumindest Teilfunktion.
gruss neuss
johny-user muss wegen dem minus 'johny-user' geschrieben werden. Außerdem musst du vorher die Datenbank benutzen.guennid hat geschrieben:Das meiste davon habe ich hinbekommen, nur nicht: "GRANT ALL ON testdb TO johnny-user IDENTIFIED BY 'johnnyspassword';" weder mit 1:1 abschreiben, noch durch Ersetzen von "johnny-user" nebst Passwort durch meinen mysql-root (einen anderen user habe ich nicht kreiert).
Code: Alles auswählen
mysql> USE testdb
Database changed
Code: Alles auswählen
mysql> GRANT ALL ON testdb TO user IDENTIFIED BY '';
Code: Alles auswählen
// sock := mysql_real_connect(PMysql(@qmysql),nil,'michael','geen',nil,0,nil,0);
sock := mysql_real_connect(PMysql(@qmysql),nil,'user','',nil,0,nil,0);
Code: Alles auswählen
$ fpc testdb4.pp
Free Pascal Compiler version 2.2.0 [2007/09/01] for x86_64
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Linux for x86-64
Compiling testdb4.pp
testdb4.pp(11,3) Note: Local variable "count" not used
testdb4.pp(11,9) Note: Local variable "num" not used
testdb4.pp(12,3) Note: Local variable "code" not used
testdb4.pp(15,3) Note: Local variable "qbuf" not used
Linking testdb4
86 lines compiled, 0.3 sec
4 note(s) issued
$ ./testdb4
Connecting to MySQL...Done.
Connection data:
Mysql_port : 3306
Mysql_unix_port : /var/run/mysqld/mysqld.sock
Host info : Localhost via UNIX socket
Server info : Uptime: 7040 Threads: 2 Questions: 456 Slow queries: 0 Opens: 251 Flush tables: 1 Open tables: 18 Queries per se5Client info : 5.0.32
Selecting Database testdb...
Executing query : Select * from FPdev...
Query returned nil result.
stell dir vor, es geht, und keiner kriegt es hin.
Re: freepascal, unit mysql
War bei mir heute morgen das Gleiche. - und ich wüsste nicht, was ich in der Zwischenzeit angerührt haben könnteneuss hat geschrieben:Und siehe da, es ließ sich mit ein paar Bemerkungen kompilieren und hat zumindest Teilfunktion.
Egal. Ich denke, dass das funktioniert hat, bringt mich ein großes Stück weiter. Das erste Mal, dass ich etwas "wirklich" aus der mysql-Umgebung herausgeholt habe!!!
Du meinst, ich hätte die Anführungszeichen vergessen? Habe nochmal in der mysql-history nachgeschaut, war in der Tat so. Aber meinen Admin-Namen hätte er doch akzeptieren müssen (der enthält aber auch einen "Unter-Strich")?neuss hat geschrieben:johny-user muss wegen dem minus 'johny-user' geschrieben werden
Den "michael" habe ich auch geändert, versteht sich.
Von dem Befehl "GRANT" will ich aber nach Möglichkeit erstmal die Finger lassen, da der mir bei meinem jetzigen Kenntnistand gefährlich vorkommt.
Eine andere Frage:
In diesem Test-Programm wird der Typ "TMYSQL" benutzt. Ich habe nichts gefunden, wo der eigentlich vereinbart wird.
Re: freepascal, unit mysql
Da hilft es die Sourcen zu durchsuchen, da du dies noch öfters tun musst daran als Beispiel,guennid hat geschrieben:In diesem Test-Programm wird der Typ "TMYSQL" benutzt. Ich habe nichts gefunden, wo der eigentlich vereinbart wird.
Code: Alles auswählen
$(FreePascal_directory)/packages/base/mysql/$ grep "TMYSQL =" *
mysql3types.inc:TMYSQL = st_mysql;
mysql4types.inc: TMYSQL = st_mysql;
$(FreePascal_directory)/packages/base/mysql/$ grep "st_mysql =" *
mysql3types.inc:st_mysql = Record
mysql4types.inc: Pst_mysql = ^st_mysql;
mysql4types.inc: st_mysql = record
mysql.inc: Pst_mysql = ^st_mysql;
mysql.inc: st_mysql = record
Hier noch ein Link auf den ich heute gestossen bin und dir allgemein weiterhelfen könnte: http://wiki.freepascal.org/MySQLDatabases/de
PS
Tröste dich damit, daß der auch bei mir nicht sauber funktioniert hat. Nachdem ich den Benutzer gelöscht und mit mysql-admin neu erstellt habe, läuft testdb4 einwandfrei durch.guennid hat geschrieben:Von dem Befehl "GRANT" will ich aber nach Möglichkeit erstmal die Finger lassen, da der mir bei meinem jetzigen Kenntnistand gefährlich vorkommt.
stell dir vor, es geht, und keiner kriegt es hin.
Re: freepascal, unit mysql
Ich glaube bisher von dem Beispielprogramm soviel für mich Relevantes verstanden zu haben:
Der mysql Befehl 'Select * from FPdev' wird einer damit initialisierten Pascal-Variablen als Zeichenkette übergeben
mysql_query() ist eine in mysql.inc vereinbarte Pascal-Funktion, über die der mysql-Befehl ausgeführt und das Ergebnis in der (komplexen) pascal-Variablen 'sock' eingelesen wird aus der es dann weiter unten wieder herausgeholt und auf den Bildschirm gezaubert wird.
Ist das einigermaßen korrekt interpretiert?
Meine nächste Frage wäre dann, wie man etwas in die Tabelle hineinbekommt. Bleiben wir einstweilen beim Ändern bereits bestehender Daten.
In Query müsste dann wohl sowas wie 'update ... set ... where ...'
Aber mit welchem Pendant zu mysql_query() kriegt man jetzt das Gewünschte in die Tabelle hinein?
Ich bin die Funktionköpfe in mysql.inc durchgegeangen und habe (wieder mal) nichts gefunden. Oder bin ich schon wieder auf einem Holzweg.
Grüße, Günther
Code: Alles auswählen
Query : Pchar = 'Select * from FPdev';
Code: Alles auswählen
mysql_query(sock,Query)
Ist das einigermaßen korrekt interpretiert?
Meine nächste Frage wäre dann, wie man etwas in die Tabelle hineinbekommt. Bleiben wir einstweilen beim Ändern bereits bestehender Daten.
In Query müsste dann wohl sowas wie 'update ... set ... where ...'
Aber mit welchem Pendant zu mysql_query() kriegt man jetzt das Gewünschte in die Tabelle hinein?
Ich bin die Funktionköpfe in mysql.inc durchgegeangen und habe (wieder mal) nichts gefunden. Oder bin ich schon wieder auf einem Holzweg.
Grüße, Günther
Re: freepascal, unit mysql
Nein, mysql_query prüft in unserem Fall nur, ob auf die geöffnete Datenbank zugegriffen werden kann. sock ist die Variable der im Programm mysql_real_connect zugewiesen wurde.guennid hat geschrieben:...Ist das einigermaßen korrekt interpretiert?
Hier nochmal die Zuweisung für Pascal in allgemeiner Form,
Code: Alles auswählen
sock := mysql_real_connect(PMysql(@qmysql),'host','user','passwort','Datenbank',0,nil,0);
Die Pascal MySQL Unit ist doch nur eine Übersetzung von mysql.h, du verwendest also alles genauso wie in der MySQL-C-API beschrieben, nur das du den Code an Pascal anpassen musst.guennid hat geschrieben:Ich bin die Funktionköpfe in mysql.inc durchgegeangen und habe (wieder mal) nichts gefunden. Oder bin ich schon wieder auf einem Holzweg.
gruss neuss
stell dir vor, es geht, und keiner kriegt es hin.
Re: freepascal, unit mysql
Ich will einen Datensatz anhängen und ein Feld füllen.
In der Form:
funktioniert das auch.
Was müsste die Variable myKomm aussehen, wenn ihr ich 'guennid' als Wert der Variablen name1 übergeben wollte?
Ich krieg das nicht gebacken,
so:
...[/code]
funktioniert's jedenfalls nicht.
Grüße, Günther
In der Form:
Code: Alles auswählen
myKomm := 'insert into FPdev (UserName) values (''guennid'')';
mysql_real_query(p1,PCHAR(myKomm),length(myKomm));
Was müsste die Variable myKomm aussehen, wenn ihr ich 'guennid' als Wert der Variablen name1 übergeben wollte?
Ich krieg das nicht gebacken,
so:
Code: Alles auswählen
VAR name1 : STRING;
...
name1 := 'guennid';
myKomm := 'insert into FPdev (UserName) values (name1)';
mysql_real_query(p1,PCHAR(myKomm),length(myKomm));
funktioniert's jedenfalls nicht.
Grüße, Günther
Re: freepascal, unit mysql
Ich habe eine Lösung gefunden:
Ich habe noch nie was mit PCHAR zu tun gehabt
So richtig das Gelbe vom Ei ist das aber noch nicht, da ich dann wieder auf 255 Zeichen beschränkt bin und das dürfte kaum ausreichen.
Es müsste wohl über ein CHAR-Array laufen, aber wie ich da Text reinkriege und anschließend in PCHAR umwandle, weiß ich noch nicht.
Grüße, Günther
Code: Alles auswählen
VAR
myKommStr : STRING;
myKomm : PCHAR;
name1 : STRING;
...
name1 := '''guennid''';
myKommStr := 'insert into FPdev (UserName) values ('+name1+')'+#0;
myKomm := @myKommStr[1];
mysql_real_query(p1,PCHAR(myKomm),length(myKomm));
...
So richtig das Gelbe vom Ei ist das aber noch nicht, da ich dann wieder auf 255 Zeichen beschränkt bin und das dürfte kaum ausreichen.
Es müsste wohl über ein CHAR-Array laufen, aber wie ich da Text reinkriege und anschließend in PCHAR umwandle, weiß ich noch nicht.
Grüße, Günther