MySQL C Library

Für allgemeine Fragen zur Programmierung mit PureBasic.
Velz
Beiträge: 182
Registriert: 18.10.2004 22:20

MySQL C Library

Beitrag von Velz »

Hallo Jungs...
Seit Jahren nutze ich eine include aus dem Forum für die libmysqlc.

Das ging so:

Code: Alles auswählen

CFF_MySQL_Real_Connect  = GetFunction(#libmysql, "mysql_real_connect") 

Procedure MySQL_Real_Connect (dbHnd,host.s,user.s,password.s,db.s,port.l,options.l)
  ProcedureReturn CallFunctionFast(CFF_MySQL_Real_Connect,dbHnd, host, user, password.s, db, port, 0, options)
EndProcedure
Bis PB Version 4.30 funktioniert das auch problemlos. Nun wollte ich auf 4.51 und es geht nichts mehr.

Bevor nun die Antwort lautet "Das macht man mit Prototypes...!!!" habe ich das natürlich gemacht.

Code: Alles auswählen

Prototype.l proto_connect(dbHnd, host, user, passwd, db, port, nul, options)
mysql_real_conntect.proto_connect=GetFunction(1, "mysql_real_connect")
Debug mysql_real_conntect(dbHnd, *host, *user, *passwd, *db, port,*null, 0) 
Nur leider funktioniert es nicht!
Hier noch die Beschreibung von Mysql:
mysql_real_connect()
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd,
const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)
Hat jemand eine Idee?
Zuletzt geändert von Velz am 07.08.2011 00:51, insgesamt 2-mal geändert.
Win10/64|Ubuntu-Server|Mint WS // Programmiere Datenbankanwendungen und Tools mit PB-5.x und MySQL-5.x unter Win und Linux
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: MySQL C Library

Beitrag von STARGÅTE »

Naja du musst schon in Prototype die einzelnen Parameter Definieren, und nicht nur hinschreiben.
Mit definieren meine ich: was ist ein String, was ein nur ein StringPointer, was ist eine Zahl usw.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Velz
Beiträge: 182
Registriert: 18.10.2004 22:20

Re: MySQL C Library

Beitrag von Velz »

Du meinst das?

Code: Alles auswählen

Prototype.l proto_connect(dbHnd.l, *host.s, *user.s, *passwd.s, *db.s, port.l, *nul.s, options.l)
mysql_real_conntect.proto_connect=GetFunction(1, "mysql_real_connect")
Debug mysql_real_conntect(dbHnd, *host, *user, *passwd, *db, port,*null, 0) 
Win10/64|Ubuntu-Server|Mint WS // Programmiere Datenbankanwendungen und Tools mit PB-5.x und MySQL-5.x unter Win und Linux
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: MySQL C Library

Beitrag von ts-soft »

Eher so:

Code: Alles auswählen

Prototype.i proto_connect(dbHnd.i, host.s, user.s, passwd.s, db.s, port.l, nul.s, options.l)
mysql_real_conntect.proto_connect=GetFunction(1, "mysql_real_connect")
Debug mysql_real_conntect(dbHnd, host, user, passwd, db, port, "", 0) 
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: MySQL C Library

Beitrag von Danilo »

ts-soft hat geschrieben:Eher so:

Code: Alles auswählen

Prototype.i proto_connect(dbHnd.i, host.s, user.s, passwd.s, db.s, port.l, nul.s, options.l)
So werden aber Unicode-Strings übergeben, wenn man mit Unicode kompiliert.
Um es immer automatisch nach Ascii (char*) zu konvertieren, kann man den
Pseudotyp 'p-ascii' verwenden:

Code: Alles auswählen

Prototype.i proto_connect(mysql.i, host.p-ascii, user.p-ascii, passwd.p-ascii, db.p-ascii, port.l, unix_socket.p-ascii, client_flag.l)
Kann auch sein das man PrototypeC verwenden muß. Oben steht jedenfalls
nichts von stdcall.
Zuletzt geändert von Danilo am 07.08.2011 11:00, insgesamt 1-mal geändert.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: MySQL C Library

Beitrag von ts-soft »

Auch bei Pseudotypes kommt kein Pointer-Zeichen davor :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: MySQL C Library

Beitrag von Danilo »

thx.
Velz
Beiträge: 182
Registriert: 18.10.2004 22:20

Re: MySQL C Library

Beitrag von Velz »

Ihr seid der Hammer....! Danke!

Mit den p-ascii funktioniert es auf Anhieb!

Gibt es irgendwo ein TUT oder Beitrag in dem das ganze erklärt wird?
Seltsamerweise funktioniert unter Linux64 immer noch ganz klassisch CallFunction

Code: Alles auswählen

CallCFunction(0, "mysql_real_connect", MYSQL, @dbhost, @dbuser, @dbpass, @dbname, dbport, #Null, #Null)
unter WIN32 funktioniert eure Lösung

Code: Alles auswählen

Prototype.i proto_connect(mysql.i, host.p-ascii, user.p-ascii, passwd.p-ascii, db.p-ascii, port.l, unix_socket.p-ascii, client_flag.l)
mysql_real_conntect.proto_connect=GetFunction(1, "mysql_real_connect")
Debug mysql_real_conntect(dbHnd, host, user, passwd, db, port,null, 0)
Ich werde mal versuchen das include auf Prototype umzusetzen... und teste dann unter Linux!
Win10/64|Ubuntu-Server|Mint WS // Programmiere Datenbankanwendungen und Tools mit PB-5.x und MySQL-5.x unter Win und Linux
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: MySQL C Library

Beitrag von Danilo »

Velz hat geschrieben:Gibt es irgendwo ein TUT oder Beitrag in dem das ganze erklärt wird?
Steht alles in der Hilfe. Auf Prototype gehen, F1 drücken und lesen.
Dort ist dann auch ein Link zu den Pseudotypes. :)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Re: MySQL C Library

Beitrag von Vermilion »

Moment - warum benutzt du nicht den MySQL C Connector und die mitgelieferte *.lib-Datei? damit kannst du mittels Import Befehlen die Dinger praktisch verlinken. Beispiel:

Code: Alles auswählen

Import "libmysql.lib"
mysql_error(MySqlObject)
EndImport
So habe ich es zumindest gemacht, als ich den Connector benutzt habe.
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Antworten