MySQL 2 Fragen (Suche und Google waren keine Hilfe)

Anfängerfragen zum Programmieren mit PureBasic.
Aspirant
Beiträge: 101
Registriert: 19.10.2006 12:19

MySQL 2 Fragen (Suche und Google waren keine Hilfe)

Beitrag von Aspirant »

Hallo,
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 = -
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
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

zu 1.)
Also ich bekomme als Fehlermeldung, das das table "myip" nicht vorhanden ist.
Wäre logisch, wenn du es nicht angelegt hast.

zu 2.)

Bei mir dauerte der Programmablauf bis zur Fehlermeldung nichtmal 3 Sekunden.
(Inkl. Firewallmeldung durchklicken ;) )

Es könnte an deiner I-Netverbindung liegen, an deiner benutzten libmysql.dll oder
vielleicht an irgendeinem Programm was auch Verbindung zum Netz hat und deinen Traffic bösartig hochschraubt.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Aspirant
Beiträge: 101
Registriert: 19.10.2006 12:19

Beitrag von Aspirant »

Ja so ist das die Einfachen Dinge beachtet man nicht,
die Table "MYIP" is klar ist ja jetzt "Test" war woll schon zu Spät zum richtigen Denken.
Naja und meine Lieb war von 2003 habe jetzt eine von 2006 und jetzt gehts auch fix

Danke
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Antworten