Re: MySQL C Library
Verfasst: 08.08.2011 13:13
Also anbei die funktionierenden Prototypen mit meinem eigenen Testcode! Leider so nicht Plug'n Play aber wer bereits mit der "alten include" gearbeitet hat, wird klar kommen!
getestet unter WinXP und Ubuntu 64
getestet unter WinXP und Ubuntu 64
Code: Alles auswählen
#libmysql = 1
#MySQL_CLIENT_COMPRESS = 32 ;client_flag für Komprimierung
;dllfile.s="/usr/lib/libmysqlclient.so.16"; libpath unter Ubuntu 11.4 64
dllfile.s="libmysql.dll"
OpenLibrary(#libmysql,dllfile)
Global dbHnd.l
Prototype.i proto_mysql_init(dbHnd)
Global mysql_init.proto_mysql_init=GetFunction(#libmysql,"mysql_init")
Prototype.i proto_mysql_connect(dbHnd, host.p-ascii, user.p-ascii, passwd.p-ascii, db.p-ascii, port.l, unix_socket.p-ascii, client_flag.l)
Global mysql_real_connect.proto_mysql_connect=GetFunction(#libmysql, "mysql_real_connect")
Prototype.i proto_mysql_error(dbHnd)
Global mysql_error.proto_mysql_error=GetFunction(#libmysql,"mysql_error")
Prototype.i proto_mysql_errno(dbHnd)
Global mysql_errno.proto_mysql_errno=GetFunction(#libmysql,"mysql_errno")
Prototype.i proto_mysql_close(dbHnd)
Global mysql_close.proto_mysql_close=GetFunction(#libmysql,"mysql_close")
Prototype.i proto_mysql_query(dbHnd, sql.p-ascii,Len_sql.l)
Global mysql_real_query.proto_mysql_query=GetFunction(#libmysql, "mysql_real_query")
Prototype.i proto_mysql_use_result(dbHnd)
Global mysql_use_result.proto_mysql_use_result=GetFunction(#libmysql,"mysql_use_result")
Prototype.i proto_mysql_store_result(dbHnd)
Global mysql_store_result.proto_mysql_store_result=GetFunction(#libmysql,"mysql_store_result")
Prototype.i proto_mysql_free_result(QueryResult)
Global mysql_free_result.proto_mysql_free_result=GetFunction(#libmysql,"mysql_free_result")
Prototype.i proto_mysql_field_count(dbHnd)
Global mysql_field_count.proto_mysql_field_count=GetFunction(#libmysql,"mysql_field_count")
Prototype.i proto_mysql_fetch_row(SQLResult)
Global mysql_fetch_row.proto_mysql_fetch_row=GetFunction(#libmysql,"mysql_fetch_row")
Prototype.i proto_mysql_fetch_lengths(SQLResult)
Global mysql_fetch_lengths.proto_mysql_fetch_lengths=GetFunction(#libmysql,"mysql_fetch_lengths")
Prototype.i proto_mysql_num_rows(SQLResult)
Global mysql_num_rows.proto_mysql_num_rows=GetFunction(#libmysql,"mysql_num_rows")
Prototype.i proto_mysql_num_fields(SQLResult)
Global mysql_num_fields.proto_mysql_num_fields=GetFunction(#libmysql,"mysql_num_fields")
Prototype.i proto_mysql_insert_id(dbHnd)
Global mysql_insert_id.proto_mysql_insert_id=GetFunction(#libmysql,"mysql_insert_id")
Procedure.s mysql_get_error(db_ID.l, requester.l)
Protected Errormsg.s, i.l, Error.l
If mysql_errno(dbHnd) > 0
*Error= mysql_error(dbHnd)
Errormsg = PeekS(*Error)
If requester
Result= MessageRequester("MySQL error",Errormsg,#PB_MessageRequester_Ok)
EndIf
EndIf
ProcedureReturn Errormsg
EndProcedure
user.s = "user"
passwd.s = "passwd"
port.l = 3306 ; Default (no need to change)
host.s="192.168.????"
db.s="" ;Schema oder in SQL
requester.l=1 ;bei 1 Ausgabe der Errormeldung über Messagerequester, sonst als ergebnis der Funktion
SQL.s="SELECT * FROM XYZ " ;richtige Tabelle einsetzen
dbHnd=mysql_init(dbHnd)
Debug mysql_real_connect(dbHnd, host, user, passwd, db, port,#NULL$, #Null) ;#Null$>Verbindungsart TCP, #Null>kein Client_Flag
mysql_get_error(dbHnd, 1) ;
Result.l=mysql_real_query(dbHnd,SQL,Len(SQL))
mysql_get_error(dbHnd, 1)
If Result
Debug "Query fehlgeschlagen"
mysql_get_error(dbHnd,1)
Else
Debug "Query ok"
SQLResult=mysql_store_result.l(dbHnd)
Debug SQLResult
Debug mysql_field_count(dbHnd)
row.l= mysql_fetch_row(SQLResult)
Debug row
If row
Debug "Ergebnis vorhanden"
EndIf
Debug mysql_fetch_lengths(SQLResult)
Debug mysql_num_rows(SQLResult)
Debug mysql_num_fields(SQLResult)
mysql_free_result(SQLResult)
EndIf
mysql_close(dbHnd)
CloseLibrary(#libmysql)
End