; MySQL 5 DLL-Wrapper Include - Version: 0.2b
; OS: Linux / Windows / AmigaOS / MacOSX ? ( can somone test this ? )
; Author: Marius Eckardt (Thalius)
; Syntaxcompatible & based on LibMySQL by Flype
; Last Changes: 29.10.2007
;
; Inspired by Flype's Userlib for Windows - i just needed a Version that runs under Linux aswell.
; There could have been alot of more checks/wraps, but in favor of speed and compatibility with Flype's
; Userlib i kept the Syntax the same.
;
; Requirements ( Version 5x of ):
; Linux : libmysqlclient.so - ( installed with "mysql-shared" Pakages )
; MacOSX : libmysqlclient.so
; Windows: libmysql.dll
; AmigaOS: mysqlclient.library
;
; ToDo:
; - Bugfixes ! ( getting used to Prototype's ... ;)
; - Descriptions / Examples
; - stmt functions
; -----------------------------------------------------------------------------------------------
;- OS Check
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
#MysqlDllFilename$ = "libmysql.lib"
CompilerCase #PB_OS_Linux
#MysqlDllFilename$ = "/usr/lib/libmysqlclient.so";symlink may be needed
CompilerCase #PB_OS_MacOS
#MysqlDllFilename$ = "libmysqlclient.so"
CompilerCase #PB_OS_AmigaOS
#MysqlDllFilename$ = "mysqlclient.library"
CompilerEndSelect
;- Structures
Structure MYSQL
EndStructure
Structure MYSQL_RES
EndStructure
Structure MYSQL_BIND
EndStructure
Structure MYSQL_STMT
EndStructure
Structure MYSQL_ROW
*field[255]
EndStructure
Structure MYSQL_FIELD
name.s
org_name.s
table.s
org_table.s
db.s
catalog.s
def.s
length.l
max_length.l
name_length.l
org_name_length.l
table_length.l
org_table_length.l
db_length.l
catalog_length.l
def_length.l
flags.l
decimals.l
charset_nr.l
type.l
EndStructure
Structure MY_CHARSET_INFO
number.l
state.l
csname.s
name.s
Comment.s
dir.s
mbminlen.l
mbmaxlen.l
EndStructure
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
Import #MysqlDllFilename$
CompilerElse
ImportC #MysqlDllFilename$
CompilerEndIf
; ** Start Prototypes **
; Function : mysql_get_client_info()
; Usage : PeekS(mysql_get_client_info())
; Desc : Returns Pointer to Version STRING of Mysql Client
mysql_get_client_info()
; Function : mysql_get_client_version()
; Usage : Result.l = mysql_get_client_version()
; Desc : Returns Versionnumber as LONG of Mysql Client
mysql_get_client_version()
; Function : mysql_errno()
; Usage : Result.l = mysql_get_client_info(*MySQLHandle)
; Desc : Returns Error No as LONG
mysql_errno(*mysql.MYSQL)
; Function : mysql_init()
; Usage : *MySQLHandle = mysql_init(#Null)
; Desc : Returns MySQL DB Handle as LONG
mysql_init(*mysql.MYSQL)
; Function : mysql_real_connect(*mysql.MYSQL,host.p-utf8,user.p-utf8,passwd.p-utf8,db.p-utf8,port.l,unix_socket.p-utf8,client_flag.l)
; Usage : Result.l = mysql_real_connect(*mysql.MYSQL,host.p-utf8,user.p-utf8,passwd.p-utf8,db.p-utf8,port.l,unix_socket.p-utf8,client_flag.l)
; Desc :
mysql_real_connect(*mysql.MYSQL,host.p-utf8,user.p-utf8,passwd.p-utf8,db.p-utf8,port.l,unix_socket.p-utf8,client_flag.l)
; Function : mysql_get_parameters()
; Usage : debug Hex(mysql_get_parameters())
; Desc :
mysql_get_parameters()
; Function : mysql_sqlstate()
; Usage : State.p-utf8 = PeekS(mysql_sqlstate(*MySQLHandle))
; Desc :
mysql_sqlstate(*mysql.MYSQL)
; Function : mysql_error()
; Usage : PeekS(mysql_error(*MySQLHandle))
; Desc : Returns Pointer as LONG to ErrormessageString
mysql_error(*mysql.MYSQL)
; Function : mysql_get_server_version()
; Usage : Result.l = mysql_get_server_version(*MySQLHandle)
; Desc : Returns LONG from ServerVersion
mysql_get_server_version(*mysql.MYSQL)
; Function : mysql_get_server_info()
; Usage : PeekS(mysql_get_server_info(*MySQLHandle))
; Desc : Returns Pointer as LONG to ServerInfoString
mysql_get_server_info(*mysql.MYSQL)
; Function : mysql_get_host_info()
; Usage : PeekS(mysql_get_host_info(*MySQLHandle))
; Desc : Returns Pointer as LONG to HostInfoString / Connectioninfo
mysql_get_host_info(*mysql.MYSQL)
; Function : mysql_select_db()
; Usage : mysql_select_db(*MySQLHandle, Databasename.p-utf8)
; Desc : Selects current Database
mysql_select_db(*mysql.MYSQL, Databasename.p-utf8)
; Function : mysql_get_proto_info()
; Usage : Result.l = mysql_get_proto_info(*MySQLHandle))
; Desc :
mysql_get_proto_info(*mysql.MYSQL)
; Function : mysql_info()
; Usage : Result.l = mysql_info(*MySQLHandle))
; Desc :
mysql_info(*mysql.MYSQL)
; Function : mysql_insert_id()
; Usage : Result.l = mysql_insert_id(*MySQLHandle))
; Desc : Returns Inserted ID as LONG
mysql_insert_id(*mysql.MYSQL)
; Function : mysql_affected_rows()
; Usage : Result.l = mysql_affected_rows(*MySQLHandle))
; Desc :
mysql_affected_rows(*mysql.MYSQL)
; Function : mysql_autocommit()
; Usage : mysql_autocommit(*MySQLHandle,#Bool) ; #True / #False
; Desc :
mysql_autocommit(*mysql.MYSQL,*mode.Byte)
; Function : mysql_character_set_name()
; Usage : mysql_character_set_name(*MySQLHandle)
; Desc :
mysql_character_set_name(*mysql.MYSQL)
; Function : mysql_close()
; Usage : mysql_close(*MySQLHandle)
; Desc : Closes the MySQL Connection
mysql_close(*mysql.MYSQL)
; Function : mysql_commit()
; Usage : mysql_commit(*MySQLHandle)
; Desc :
mysql_commit(*mysql.MYSQL)
; Function : mysql_debug()
; Usage : mysql_debug(DebugString.p-utf8)
; Desc :
mysql_debug(DebugString.p-utf8)
; Function : mysql_disable_reads_from_master()
; Usage : mysql_disable_reads_from_master(*MySQLHandle)
; Desc :
mysql_disable_reads_from_master(*mysql.MYSQL)
; Function : mysql_disable_rpl_parse()
; Usage : mysql_disable_rpl_parse(*MySQLHandle)
; Desc :
mysql_disable_rpl_parse(*mysql.MYSQL)
; Function : mysql_dumPB_debug_info()
; Usage : mysql_dumPB_debug_info(*MySQLHandle)
; Desc :
mysql_dumPB_debug_info(*mysql.MYSQL)
; Function : mysql_embedded()
; Usage : mysql_embedded()
; Desc :
mysql_embedded()
; Function : mysql_enable_reads_from_master()
; Usage : mysql_enable_reads_from_master(*MySQLHandle)
; Desc :
mysql_enable_reads_from_master(*mysql.MYSQL)
; Function : mysql_enable_rpl_parse()
; Usage : mysql_enable_rpl_parse(*MySQLHandle)
; Desc :
mysql_enable_rpl_parse(*mysql.MYSQL)
; Function : mysql_field_count()
; Usage : mysql_field_count(*MySQLHandle)
; Desc :
mysql_field_count(*mysql.MYSQL)
; Function : mysql_library_end()
; Usage : mysql_library_end(*MySQLHandle)
; Desc :
mysql_library_end(*mysql.MYSQL)
; Function : mysql_list_processes()
; Usage : mysql_list_processes(*MySQLHandle)
; Desc :
mysql_list_processes(*mysql.MYSQL)
; Function : mysql_more_results()
; Usage : mysql_more_results(*MySQLHandle)
; Desc :
mysql_more_results(*mysql.MYSQL)
; Function : mysql_next_result()
; Usage : mysql_next_result(*MySQLHandle)
; Desc :
mysql_next_result(*mysql.MYSQL)
; Function : mysql_ping()
; Usage : mysql_ping(*MySQLHandle)
; Desc :
mysql_ping(*mysql.MYSQL)
; Function : mysql_read_query_result()
; Usage : mysql_read_query_result(*MySQLHandle)
; Desc :
mysql_read_query_result(*mysql.MYSQL)
; Function : mysql_reload()
; Usage : mysql_reload(*MySQLHandle)
; Desc :
mysql_reload(*mysql.MYSQL)
; Function : mysql_rollback()
; Usage : mysql_rollback(*MySQLHandle)
; Desc :
mysql_rollback(*mysql.MYSQL)
; Function : mysql_rpl_parse_enabled()
; Usage : mysql_rpl_parse_enabled(*MySQLHandle)
; Desc :
mysql_rpl_parse_enabled(*mysql.MYSQL)
; Function : mysql_rpl_probe()
; Usage : mysql_rpl_probe(*MySQLHandle)
; Desc :
mysql_rpl_probe(*mysql.MYSQL)
; Function : mysql_server_end()
; Usage : mysql_server_end()
; Desc :
mysql_server_end()
; Function : mysql_thread_end()
; Usage : mysql_thread_end()
; Desc :
mysql_thread_end()
; Function : mysql_thread_init()
; Usage : mysql_thread_init()
; Desc :
mysql_thread_init()
; Function : mysql_thread_safe()
; Usage : mysql_thread_safe()
; Desc :
mysql_thread_safe()
; Function : mysql_stat()
; Usage : mysql_stat(*MySQLHandle)
; Desc :
mysql_stat(*mysql.MYSQL)
; Function : mysql_store_result()
; Usage : *MySQLResult = mysql_store_result(*MySQLHandle)
; Desc :
mysql_store_result(*mysql.MYSQL)
; Function : mysql_thread_id()
; Usage : Result.l = mysql_thread_id(*MySQLHandle)
; Desc :
mysql_thread_id(*mysql.MYSQL)
; Function : mysql_use_result()
; Usage : mysql_use_result(*MySQLHandle)
; Desc :
mysql_use_result(*mysql.MYSQL)
; Function : mysql_warning_count()
; Usage : mysql_warning_count(*MySQLHandle)
; Desc :
mysql_warning_count(*mysql.MYSQL)
; Function : mysql_change_user()
; Usage : mysql_change_user(*MySQLHandle, user.p-utf8, passwd.p-utf8, db.p-utf8)
; Desc :
mysql_change_user(*mysql.MYSQL,user.p-utf8,passwd.p-utf8,db.p-utf8)
; Function : mysql_data_seek()
; Usage : mysql_data_seek(*MySQLResult, offset.d)
; Desc :
mysql_data_seek(*result.MYSQL_RES,offset.d)
; Function : mysql_eof()
; Usage : mysql_eof(*MySQLResult)
; Desc :
mysql_eof(*result.MYSQL_RES)
; Function : mysql_escape_string()
; Usage : mysql_escape_string(strTo.p-utf8, strFrom.p-utf8, length.l)
; Desc :
mysql_escape_string(strTo.p-utf8,strFrom.p-utf8,length.l)
; Function : mysql_fetch_field()
; Usage : *field.MYSQL_FIELD = mysql_fetch_field(*MySQLResult)
; Desc :
mysql_fetch_field(*result.MYSQL_RES)
; Function : mysql_fetch_field_direct()
; Usage : *field.MYSQL_FIELD = mysql_fetch_field_direct(*MySQLResult, fieldnr.l)
; Desc :
mysql_fetch_field_direct(*result.MYSQL_RES,fieldnr.l)
; Function : mysql_fetch_fields()
; Usage : *fieldArray.MYSQL_FIELD = mysql_fetch_fields(*MySQLResult)
; Desc :
mysql_fetch_fields(*result.MYSQL_RES)
; Function : mysql_fetch_lengths()
; Usage : mysql_fetch_lengths(*MySQLResult)
; Desc :
mysql_fetch_lengths(*result.MYSQL_RES)
; Function : mysql_fetch_row()
; Usage : *row.MYSQL_ROW = mysql_fetch_row(*MySQLResult)
; Desc :
mysql_fetch_row(*result.MYSQL_RES)
; Function : mysql_field_seek()
; Usage : mysql_field_seek(*MySQLResult, offset.l)
; Desc :
mysql_field_seek(*result.MYSQL_RES,offset.l)
; Function : mysql_field_tell()
; Usage : mysql_field_tell(*MySQLResult)
; Desc :
mysql_field_tell(*result.MYSQL_RES)
; Function : mysql_free_result()
; Usage : mysql_free_result(*MySQLResult)
; Desc :
mysql_free_result(*result.MYSQL_RES)
; Function : mysql_get_character_set_info()
; Usage : mysql_get_character_set_info(*MySQLResult, *MySQL_CharsetInfo)
; Desc :
mysql_get_character_set_info(*mysql.MYSQL,*cs.MY_CHARSET_INFO)
; Function : mysql_hex_string()
; Usage : mysql_hex_string(strTo.p-utf8, strFrom.p-utf8, length.l)
; Desc :
mysql_hex_string(strTo.p-utf8,strFrom.p-utf8,length.l)
; Function : mysql_kill()
; Usage : mysql_kill(*MySQLHandle, pid.l)
; Desc :
mysql_kill(*mysql.MYSQL,pid.l)
; Function : mysql_library_init()
; Usage : mysql_library_init(argc.l, argv.l, groups.l)
; Desc :
mysql_library_init(argc.l,argv.l,Groups.l)
; Function : mysql_list_dbs()
; Usage : mysql_list_dbs(*MySQLHandle, Wildcard.p-utf8)
; Desc :
mysql_list_dbs(*mysql.MYSQL,wild.p-utf8)
; Function : mysql_list_fields()
; Usage : mysql_list_fields(*MySQLHandle, Table.p-utf8, Wildcard.p-utf8)
; Desc :
mysql_list_fields(*mysql.MYSQL,table.p-utf8,wild.p-utf8)
; Function : mysql_list_tables()
; Usage : mysql_list_tables(*MySQLHandle, Wildcard.p-utf8)
; Desc :
mysql_list_tables(*mysql.MYSQL,wild.p-utf8)
; Function : mysql_master_query()
; Usage : mysql_master_query(*MySQLHandle, query.p-utf8, length.l)
; Desc :
mysql_master_query(*mysql.MYSQL,query.p-utf8,length.l)
; Function : mysql_num_fields()
; Usage : Result.l = mysql_num_fields(*MySQLResult)
; Desc :
mysql_num_fields(*result.MYSQL_RES)
; Function : mysql_num_rows()
; Usage : Result.l = mysql_num_rows(*MySQLResult)
; Desc :
mysql_num_rows(*result.MYSQL_RES)
; Function : mysql_options()
; Usage : Result.l = mysql_options(*MySQLHandle, option.l, arg.p-utf8)
; Desc :
mysql_options(*mysql.MYSQL,option.l,arg.p-utf8)
; Function : mysql_query()
; Usage : Result.l = mysql_query(*MySQLHandle, query.p-utf8)
; Desc :
mysql_query(*mysql.MYSQL,query.p-utf8)
; Function : mysql_real_escape_string()
; Usage : mysql_real_escape_string(*MySQLHandle, strTo.p-utf8, strFrom.p-utf8, length.l)
; Desc :
mysql_real_escape_string(*mysql.MYSQL,strTo.p-utf8,strFrom.p-utf8,length.l)
; Function : mysql_real_query()
; Usage : *MySQLResult = mysql_real_query(*MySQLHandle, query.p-utf8, length.l)
; Desc :
mysql_real_query(*mysql.MYSQL,query.p-utf8,length.l)
; Function : mysql_refresh()
; Usage : mysql_refresh(*MySQLHandle, options.l)
; Desc :
mysql_refresh(*mysql.MYSQL,Options.l)
; Function : mysql_row_seek()
; Usage : mysql_row_seek(*MySQLHandle, offset.l)
; Desc :
mysql_row_seek(*mysql.MYSQL,offset.l)
; Function : mysql_row_tell()
; Usage : mysql_row_tell(*MySQLResult)
; Desc :
mysql_row_tell(*result.MYSQL_RES)
; Function : mysql_rpl_query_type()
; Usage : mysql_rpl_query_type(*MySQLHandle, type.l)
; Desc :
mysql_rpl_query_type(*mysql.MYSQL,type.l)
; Function : mysql_send_query()
; Usage : mysql_send_query(*MySQLHandle, query.p-utf8, length.l)
; Desc :
mysql_send_query(*mysql.MYSQL,query.p-utf8,length.l)
; Function : mysql_server_init()
; Usage : mysql_server_init(argc.l, argv.l, groups.l)
; Desc :
mysql_server_init(argc.l,argv.l,Groups.l)
; Function : mysql_set_character_set()
; Usage : mysql_set_character_set(*MySQLHandle, csname.p-utf8)
; Desc :
mysql_set_character_set(*mysql.MYSQL,csname.p-utf8)
; Function : mysql_set_server_option()
; Usage : mysql_set_server_option(*MySQLHandle, option.l)
; Desc :
mysql_set_server_option(*mysql.MYSQL,option.l)
; Function : mysql_shutdown()
; Usage : mysql_shutdown(*MySQLHandle, shutdown_level.l)
; Desc :
mysql_shutdown(*mysql.MYSQL,shutdown_level.l)
; Function : mysql_slave_query()
; Usage : mysql_slave_query(*MySQLHandle, query.p-utf8, length.l)
; Desc :
mysql_slave_query(*mysql.MYSQL,query.p-utf8,length.l)
; Function : mysql_ssl_set()
; Usage : mysql_ssl_set(*MySQLHandle, key.p-utf8, cert.p-utf8, ca.p-utf8, capath.p-utf8, cipher.p-utf8)
; Desc :
mysql_ssl_set(*mysql.MYSQL,key.p-utf8,cert.p-utf8,ca.p-utf8,capath.p-utf8,cipher.p-utf8)
EndImport
Procedure.s PeekS_Utf8(*buffer);also checks if buffer is valid, returns an empty string if *buffer is 0
If *buffer
ProcedureReturn PeekS(*buffer, -1, #PB_UTF8)
Else
ProcedureReturn ""
EndIf
EndProcedure
; Debug "Info: " + PeekS(mysql_get_client_info(), -1, #PB_UTF8)
; Debug "Version: " + Str(mysql_get_client_version())
; Debug Hex(mysql_get_parameters())
;
; *hDB = mysql_init(#Null)
;
; If *hDB
; If mysql_real_connect(*hDB,"127.0.0.1","root","password","",3306,"NULL",#Null)
; mysql_autocommit(*hDB,#True)
; Debug "Connected!"
; Debug mysql_get_server_version(*hDB)
;
;
; Debug "Server:"
; Debug PeekS(mysql_get_server_info(*hDB), -1, #PB_UTF8)
; Debug "Connection:"
; Debug PeekS(mysql_get_host_info(*hDB), -1, #PB_UTF8)
; Debug "Protocolgeneration:"
; Debug Str(mysql_get_proto_info(*hDB))
;
; If mysql_select_db(*hDB,"test") <> 1
; Debug "* DB Selected"
;
; If mysql_query(*hDB,"SHOW TABLES") <> 1
; Debug "* Query made..."
; ; get next INSERT ID
; id = mysql_insert_id(*hDB)
; If id
; Debug "id>"+Str(id)
; EndIf
; ; get query info
; *info = mysql_info(*hDB)
; If *info
; Debug PeekS(*info, -1, #PB_UTF8)
; EndIf
;
; ; do we have a Result ?
; If mysql_field_count(*hDB)
; *result = mysql_store_result(*hDB)
;
; If *result
; Debug "* Got Result!"
; nRows.l = mysql_num_rows(*result)
; Debug "Num Rows: " + Str(nRows.l)
;
; For i = 0 To nRows.l - 1
; *row.MYSQL_ROW = mysql_fetch_row(*result)
; If *row
; Rows.s = ""
; For j = 0 To mysql_num_fields(*result) - 1
; Rows + PeekS_Utf8(*row\field[j]) + ", ";PeekS_Utf8() does a peeks in utf8 mode, but if *row\field[j] is null (field is empty) it returns an empty string.
; Next
; Debug Rows
; Debug "rows>"+Rows
; EndIf
; Next
;
; mysql_free_result(*result)
; EndIf
;
; EndIf
;
; Else
; Debug PeekS(mysql_error(*hDB), -1, #PB_UTF8)
; EndIf
;
; Else
; Debug Str(mysql_errno(*hDB))
; Debug "Database Error!"
; Debug PeekS(mysql_error(*hDB), -1, #PB_UTF8)
; EndIf
;
; Else ; No Connect, Error!
; Debug "Error: "
; Debug PeekS(mysql_error(*hDB), -1, #PB_UTF8)
; EndIf
;
; mysql_close(*hDB)
;
; EndIf
;*************************************************************************************************