MySQL 2 Fragen (Suche und Google waren keine Hilfe)
Verfasst: 10.06.2008 00:40
Hallo,
habe vor einiger zeit schon mal gefragt warum ein Verbindungs aufbau mit der libmysql.dll so lage dauert!
Ich benutze Folgen Code
Die im Code Angegebene DB ist vorhanden und ist für test zwecke genutzt werden.
Fragen:
1. Beim verbinden mit dem Server erhalte ich eine Fehler Meldung, hier ist mir der Hintergrund der Meldung nicht klar.
2. Warum brauch der Verbindungsaufbau gute 40sec. ?
Ein test mit HeidiSQL ergab Verbindungsaufbau extern ca 10sec. Lokal <1sec
SQL Server Lokal ist 4.0.25
Frage 2 ist für mich die Wichtigere
MFG Aspi
habe vor einiger zeit schon mal gefragt warum ein Verbindungs aufbau mit der libmysql.dll so lage dauert!
Ich benutze Folgen Code
Code: Alles auswählen
; English forum: http://www.purebasic.fr/english/viewtopic.php?t=2734
; Author: Max
; Date: 22. April 2003
; OS: Windows
; Demo: Yes
; Example for using MySQL with the libmysql.dll (download from
; http://www.mysqltools.com/download.htm)
; SQLite ist eine eigenständige Datenbankengine, die zwar die SQL92
; Syntax unterstützt, sonst aber mit MySQL nichts zu tun hat.
;
; Wenn Du übers Internet auf eine MySQL Datenbank zugreifen
; möchtest kannst Du das entweder über ODBC oder direkt mit der
; libmysql.dll -> http://www.mysqltools.com/download.htm realisieren.
; PS: Nachfolgend von Max aus dem Englischen Forum ein Beispiel für
; die Nutzung der libmysql.dll:
#libmysql = 1
host.s = "db4free.net"
user.s = "aspirant"
passwd.s = "l38543"
db.s = "purebasic"
port.l = 3306
dbHnd.l
SQL.s
row.s
i.l
j.l
affRows.l
fieldNum.l
rowsNum.l
Procedure.s GetError(db_ID,requester)
Protected Errormsg.s, i.l, Error.l
If CallFunction(#libmysql,"mysql_errno",db_ID) > 0
*Error =CallFunction(#libmysql,"mysql_error",db_ID)
i=-1
Repeat
i=i+1
Errormsg=Errormsg+PeekS(*Error+i,1)
Until PeekB(*Error+i)=0
If requester
Result= MessageRequester("MySQL error",Errormsg,#PB_MessageRequester_Ok)
EndIf
EndIf
ProcedureReturn Errormsg
EndProcedure
If OpenLibrary(#libmysql,"libmysql.dll")
Result=CallFunction(#libmysql,"mysql_init",dbHnd)
If Result
dbHnd = Result
If CallFunction(#libmysql,"mysql_real_connect",dbHnd, host, user, passwd, db, port, "", 0) = 0
GetError(dbHnd,1)
Else
;CallDebugger
SQL = "SELECT * FROM myip"
If CallFunction(#libmysql,"mysql_real_query", dbHnd, SQL, Len(SQL))
GetError(dbHnd,1)
Else
*mysqlResult=CallFunction(#libmysql,"mysql_store_result",dbHnd)
;no result returned
If *mysqlResult=0
;no fields returned means error
If CallFunction(#libmysql,"mysql_field_count",dbHnd)
GetError(dbHnd,1)
;fields are returned, so no error but query didn't return data
Else
EndIf
;results are returned
Else
affRows = CallFunction(#libmysql,"mysql_affected_rows",dbHnd)
fieldNum = CallFunction(#libmysql,"mysql_num_fields",*mysqlResult)
rowsNum = CallFunction(#libmysql,"mysql_num_rows",*mysqlResult)
Debug affRows
Debug fieldNum
Debug rowsNum
For i=1 To rowsNum
*mysqlRow=CallFunction(#libmysql,"mysql_fetch_row",*mysqlResult)
*mysqlLen=CallFunction(#libmysql,"mysql_fetch_lengths",*mysqlResult)
row = ""
;length of given field
For j=1 To fieldNum
length=PeekL(*mysqlLen+4*(j-1))
fieldptr=PeekL(*mysqlRow+4*(j-1))
If fieldptr>0
content.s=PeekS(fieldptr,length)
Else
;zero pointer returend means empty field
content="NULL"
EndIf
row = row + content + ";"
Next j
Debug row
Next i
Result.l=CallFunction(#libmysql,"mysql_free_result",*mysqlResult)
EndIf
EndIf
EndIf
EndIf
Else
MessageRequester("Error!", "Couldn't open the libmysql.dll!")
EndIf
; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -
Fragen:
1. Beim verbinden mit dem Server erhalte ich eine Fehler Meldung, hier ist mir der Hintergrund der Meldung nicht klar.
2. Warum brauch der Verbindungsaufbau gute 40sec. ?
Ein test mit HeidiSQL ergab Verbindungsaufbau extern ca 10sec. Lokal <1sec
SQL Server Lokal ist 4.0.25
Frage 2 ist für mich die Wichtigere
MFG Aspi