Seite 1 von 1

libmysql.dll

Verfasst: 07.05.2010 20:10
von Aspirant
Hallo,
in alten Programmen konnte ich mich so bei MYSQL anmelden.

jetzt habe ich PB 4.40 und es geht nicht mehr.
Lib ist noch immer die selbe und der MYSQL ist auch noch immer der selbe nur PB ist neu und ich habe kein Plan warum es jetzt nicht mehr geht.

Code: Alles auswählen

user.s = "*****"
pass.s = "****"
host.s = "10.10.1.199"
port.l = 3306
mydb.s = ""
#libmysql =1

If OpenLibrary(#libmysql,"libmysql.dll") 
  Result=CallFunction(#libmysql,"mysql_init",dbHnd)
  If Result
    dbHnd = Result
    If CallFunction(#libmysql,"mysql_real_connect",dbHnd, host, user, pass, mydb, port, "", 0) = 0 ;
      Else
        Repeat
          wevent =WaitWindowEvent(50)
        Until wevent=#PB_Event_CloseWindow
        Result.l=CallFunction(#libmysql,"mysql_free_result",*mysqlResult)
    EndIf
  EndIf
  Else ; Fehler Lib nicht geladen
    Debug "Fehler Lib nicht geladen"
EndIf
Ich hoffe mir kann mal jemand die Augen öffnen

Re: libmysql.dll

Verfasst: 07.05.2010 20:18
von HeX0R
Aspirant hat geschrieben: Ich hoffe mir kann mal jemand die Augen öffnen
Klar:
Nimm Prototypes!

Re: libmysql.dll

Verfasst: 07.05.2010 20:21
von ts-soft
>> Ich hoffe mir kann mal jemand die Augen öffnen
Ich auch, dann hättest Du anhand der Fehlermeldung des Compilers die Lösung gefunden.
Des weiteren schaut man in solchen Fällen in die Historie der Hilfe um zu schauen: Was hat sich geändert.

Wärst Du schon beim Wechsel auf PB 4.0 dem Rat gefolgt: Nutze Prototypes statt CallFunction, CallFunctionFast
usw., wäre das Problem nie aufgetaucht.

Ich hoffe Deine Augen sind jetzt offen <)

Re: libmysql.dll

Verfasst: 08.05.2010 00:21
von Andreas21
Du must vor Strings ein @ setzen.

Code: Alles auswählen

user.s = "*****"
pass.s = "****"
host.s = "10.10.1.199"
port.l = 3306
mydb.s = ""
#libmysql =1

If OpenLibrary(#libmysql,"libmysql.dll") 
  Result=CallFunction(#libmysql,"mysql_init",dbHnd)
  If Result
    dbHnd = Result
    If CallFunction(#libmysql,"mysql_real_connect",dbHnd, @host, @user, @pass, @mydb, port, "", 0) = 0 ;
      Else
        Repeat
          wevent =WaitWindowEvent(50)
        Until wevent=#PB_Event_CloseWindow
        Result.l=CallFunction(#libmysql,"mysql_free_result",*mysqlResult)
    EndIf
  EndIf
  Else ; Fehler Lib nicht geladen
    Debug "Fehler Lib nicht geladen"
EndIf
Mit Prototype

Code: Alles auswählen

Structure MYSQL
EndStructure

user.s = "*****"
pass.s = "****"
host.s = "10.10.1.199"
port.l = 3306
mydb.s = ""
#libmysql =1

Prototype.l Protomysql_init        (Flags.l = 0)
Prototype.l Protomysql_real_connect(*MYSQL.MYSQL, host.s, user.s, pass.s, db.s = "", port.l = 3306, unix_socket.l = 0, client_flag.l = 32)
Prototype.l Protomysql_free_result (*mysqlResult)

If OpenLibrary(#libmysql,"libmysql.dll")
  mysql_init        .Protomysql_init         = GetFunction(#libmysql, "mysql_init")
  mysql_real_connect.Protomysql_real_connect = GetFunction(#libmysql, "mysql_real_connect")
  mysql_free_result .Protomysql_free_result  = GetFunction(#libmysql, "mysql_free_result")
    
  Result = mysql_init(dbHnd)
  If Result
    dbHnd = Result
    If mysql_real_connect(dbHnd, host, user, pass, mydb, port, "", 0) = 0 ;
      Else
        Repeat
          wevent =WaitWindowEvent(50)
        Until wevent=#PB_Event_CloseWindow
        Result.l=mysql_free_result(*mysqlResult)
    EndIf
  EndIf
  Else ; Fehler Lib nicht geladen
    Debug "Fehler Lib nicht geladen"
EndIf

Re: libmysql.dll

Verfasst: 08.05.2010 08:59
von HeX0R
Hört doch endlich mal auf, immer diese Fix- und Fertig Lösungen anzubieten.

Ist ja schön, wenn jeder so hilfsbereit ist, aber der Lerneffekt bleibt hierbei meist auf der Strecke.

Nichts bleibt besser im Gedächtnis, als selbst erarbeitetes...

Re: libmysql.dll

Verfasst: 08.05.2010 10:11
von Andreas21
Naja Fix und Fertig würd ich das nicht nennen. Es soll nur ein beispiel sein das zeigt wie man es anwendet.

Da fehlen ja auch noch diverse Funktionen um damit wirklich was sinvoles machen zu können.