Seite 1 von 1

MySql in Linux benutzen

Verfasst: 12.01.2010 23:55
von Andreas21
Ich komme bei dem code einfach nicht weiter.

Ich habe ihn auf 2 Linux Debian systemen versucht.
Beide ohne erfolg.

Code: Alles auswählen

OpenConsole()

If OpenLibrary(0, "/usr/lib/libmysqlclient.so")
  MYSQL.l = CallCFunction(0, "mysql_init" , #null)
  If MYSQL
    PrintN("mysql_init OK")
    host.s = "localhost"
    user.s = "root"
    pass.s = ""
    db.s = ""
    port.l = 3306
    If CallCFunction(0, "mysql_real_connect", MYSQL, @host, @user, @pass, @db, port, #null, #null)
      PrintN("Connected OK!") 
      CallCFunction(0, "mysql_close", MYSQL)
    Else
      PrintN("Connected Fehler!")
    EndIf  
  Else
    PrintN("Critical Error mysql_init")
  EndIf  
  CloseLibrary(0)
Else
  PrintN("Critical Error libmysqlclient.so nicht gefunden !")
EndIf

CloseConsole()
******************************************
PureBasic 4.40 (Linux - x86)
******************************************

Loading external modules...
Starting compilation...
28 lines processed.
Creating the executable.

- Feel the ..PuRe.. Power -

mysql_init OK
Connected Fehler!
debian:~#
Ich weis das ich das mal hinbekommen hatte.
Mit der libmysqlclient.so.10 hats damals glaub ich funktioniert.
Nur die ist nicht mehr zu finden im Internet.
Es müste aber doch auch mit der libmysqlclient.so.15 und libmysqlclient.so.16 gehn?

Ich kann zwar Init machen aber nicht zum Server verbinden.
Habe es mit localhost versucht und auch mit der IP versucht..
Das Programm wird auf dem linux server ausgeführt wo auch der Mysql-Server liegt.

Ich brauche den zugriff für Mysql da ich peer PB meine Mysql Daten verarbeiten will.
Unter Windows leuft das ja ohne Probleme.

Mit ODCB habe ich bis jetzt auch keinen erfolg gehabt da ich nur Consolen möglichkeit habe.

Re: MySql in Linux benutzen

Verfasst: 13.01.2010 10:29
von Velz
Bei mir sieht real_connect etwas anders aus. Allerdings noch in einem Programm mit PB 3.xx

CallCFunction(MySQL_Real_Connect,dbHnd.l, host.s, user.s, password.s, db.s, port.l, 0, 0)

Vieleicht hilft es? Jedoch ich meine gelesen zu haben, dass in 4.4 etwas bei den Funktionsaufrufen anders ist.

Re: MySql in Linux benutzen

Verfasst: 13.01.2010 10:47
von ts-soft
Velz hat geschrieben:Bei mir sieht real_connect etwas anders aus. Allerdings noch in einem Programm mit PB 3.xx

CallCFunction(MySQL_Real_Connect,dbHnd.l, host.s, user.s, password.s, db.s, port.l, 0, 0)

Vieleicht hilft es? Jedoch ich meine gelesen zu haben, dass in 4.4 etwas bei den Funktionsaufrufen anders ist.
Das kann in keinem Fall mehr Funktionieren, da CallCFunction jetzt nur noch Integer nutzt und keinen Anytyp.
Wollte auch nur anmerken, stellt solche Sachen bloß endlich auf Prototypes, die es seit PB4.0 gibt, um!

Gruß
Thomas

Re: MySql in Linux benutzen

Verfasst: 13.01.2010 12:33
von Andreas21
Ok dann benutz ich die mal. Der Code war ja auch nur zum testen ob ich eine Verbindung aufbauen kann.

Hier der Code mit.

Wenn ich localhost angebe leufts nicht. Wenn ich aber die IP angebe leufts jetzt.
Ich kann auch nicht unter localhost mich mit dem root verbinden so wie in phpmyadmin.
Scheinbar giebts bei mir ein problem mit localhost. 127.0.0.1 geht nämlich -.-

Code: Alles auswählen

OpenConsole()

If OpenLibrary(0, "/usr/lib/libmysqlclient.so")
  PrototypeC.l Protomysql_init(Flags.l = 0)
  PrototypeC.l Protomysql_real_connect(MYSQL.l, host.s, user.s, pass.s, db.s = "", port.l = 3306, unix_socket.l = 0, client_flag.l = 0)
  PrototypeC.l Protomysql_close(MYSQL.l)
  Global mysql_init.Protomysql_init = GetFunction(0, "mysql_init")
  Global mysql_real_connect.Protomysql_real_connect = GetFunction(0, "mysql_real_connect")
  Global mysql_close.Protomysql_close = GetFunction(0, "mysql_close")
  MYSQL.l = mysql_init()
  If MYSQL
    PrintN("mysql_init OK")
    host.s = "localhost"
    user.s = "root"
    pass.s = ""
    If mysql_real_connect(MYSQL, host, user, pass)
      PrintN("Connected OK!") 
      mysql_close(MYSQL)
    Else
      PrintN("Connected Fehler!")
    EndIf  
  Else
    PrintN("Critical Error mysql_init")
  EndIf  
  CloseLibrary(0)
Else
  PrintN("Critical Error libmysqlclient.so nicht gefunden !")
EndIf

CloseConsole()