ODBC-Datenbankzugriff unter Linux für Dummies
ODBC-Datenbankzugriff unter Linux für Dummies
Geschichte:
Zitat:
iODBC Configuration Script
iODBC Driver Manager 3.52.9
Copyright (C) 1996-2014 OpenLink Software
Please report all bugs to <iodbc@openlinksw.com>
iodbc-config --libs
-L/usr/lib/x86_64-linux-gnu -liodbc -liodbcinst
Bei PureBasic bekomme ich immer nur:
/usr/bin/ld: cannot find -lodbc
collect2: error: ld returned 1 exit status
...
Ich habe das hier installiert:
sudo apt-get install libiodbc2-dev
______________________________
Ich habe ein paar Änderungen gemacht, da eine normale IODBC -Installation bei mir nicht funktioniert.
Im Verzeichnis "/usr/lib/x86_64-linux-gnu" habe ich die installierten Libs "iodbc" und "iodbcinst" einfach manuell in "odbc" und "odbcinst" umgenannt.
Jetzt kommt bei:
Debug UseODBCDatabase()
folgendes: 94740839224784
(Also keine Null und die Lib wird auch gefunden.)
Es wird aber leider immer per Standard-Installation auch eine Lib "odbc" im oben genannten Verzeichnis installiert (diese habe ich gelöscht (weil diese irgendwie nicht vom "ld" gefunden wird, obwohl diese genau so heißt) und gegen die umbenannte "iodbc"-Lib ersetzt.)
Jetzt habe ich mir mal eine Test-ODBC-Datenbank heruntergeladen, aber nach dem Öffnen hängt sich PureBasic auf.
Wenn ich es so versuche:
If CreateFile(0, DatabaseFile$)
...
If OpenDatabase(0, DatabaseFile$, "", "", #PB_Database_ODBC)
(Also eine leere Datenbank, oder ?)
kommt nur: Can't open database !
Hat jemand Tipps ?
Zitat:
iODBC Configuration Script
iODBC Driver Manager 3.52.9
Copyright (C) 1996-2014 OpenLink Software
Please report all bugs to <iodbc@openlinksw.com>
iodbc-config --libs
-L/usr/lib/x86_64-linux-gnu -liodbc -liodbcinst
Bei PureBasic bekomme ich immer nur:
/usr/bin/ld: cannot find -lodbc
collect2: error: ld returned 1 exit status
...
Ich habe das hier installiert:
sudo apt-get install libiodbc2-dev
______________________________
Ich habe ein paar Änderungen gemacht, da eine normale IODBC -Installation bei mir nicht funktioniert.
Im Verzeichnis "/usr/lib/x86_64-linux-gnu" habe ich die installierten Libs "iodbc" und "iodbcinst" einfach manuell in "odbc" und "odbcinst" umgenannt.
Jetzt kommt bei:
Debug UseODBCDatabase()
folgendes: 94740839224784
(Also keine Null und die Lib wird auch gefunden.)
Es wird aber leider immer per Standard-Installation auch eine Lib "odbc" im oben genannten Verzeichnis installiert (diese habe ich gelöscht (weil diese irgendwie nicht vom "ld" gefunden wird, obwohl diese genau so heißt) und gegen die umbenannte "iodbc"-Lib ersetzt.)
Jetzt habe ich mir mal eine Test-ODBC-Datenbank heruntergeladen, aber nach dem Öffnen hängt sich PureBasic auf.
Wenn ich es so versuche:
If CreateFile(0, DatabaseFile$)
...
If OpenDatabase(0, DatabaseFile$, "", "", #PB_Database_ODBC)
(Also eine leere Datenbank, oder ?)
kommt nur: Can't open database !
Hat jemand Tipps ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: ODBC-Datenbankzugriff unter Linux für Dummies
Wie muss ich, bzw muss ich "/etc/odbcinst.ini" und/oder "/etc/odbc.ini" noch irgendwie konfigurieren ?
Wie muss das konfiguriert werden ?
Bsp:
Wie muss das konfiguriert werden ?
Bsp:
[testing]
Description = Meine Datenbank
Driver = TestDriver
Server = 127.0.0.1
Database = tolleDB
UID = root
PWD = tolleDB
[TestDriver]
Description = TestDriver
Driver = /usr/lib/x86_64-linux-gnu/libodbc.so
Setup = /usr/lib/x86_64-linux-gnu/libodbc.so
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: ODBC-Datenbankzugriff unter Linux für Dummies
Linux hat früher IODBC genutzt, nutzt aber inzwischen UnixODBC, da IODBC nicht immer im Paketmanager verfügbar!
Ob diese jetzt Kompatibel sind oder es egal ist, welchen man nutzt, kann ich aber nicht sagen.
Ob diese jetzt Kompatibel sind oder es egal ist, welchen man nutzt, kann ich aber nicht sagen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Re: ODBC-Datenbankzugriff unter Linux für Dummies
Wollte mich auch mal wieder damit beschäftigen nach der Umstellung auf unixODBC
Zur installation der aktuellen Version
http://www.unixodbc.org/
Zur installation der aktuellen Version
Link zu unixODBC und in diesen weitere link zu dem Datenbank Treibernsudo apt-get install unixodbc-dev unixodbc-bin unixodbc
http://www.unixodbc.org/
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: ODBC-Datenbankzugriff unter Linux für Dummies
Hallo mk-soft!
Ich hatte es auch erst mit "unixodbc" probiert, da lieferte PureBasic aber nur haufen Fehlermeldungen das es Funktion "xyz" nicht finden kann.
Mit den umgenannten "iodbc" - Libs ging es dann.
PureBasic konnte die Lib finden und linken.
Aber eine Erstellung/Verbindung zu einer Datenbank war unmöglich.
Ich habe dann mal komplett aufgeräumt und jetzt auch teilweise manuell Pakete aus dem Verzeichnis "/var/lib/dpkg/info" gelöscht, weil Synaptic sich absolut weigerte Abhängigkeiten aufzulösen/ bzw. Pakete auch nicht mehr mit "--force" deinstallierte.
Ich habe dann fehlerhafte "odbc-Dateien" manuell gelöscht und alles was mit ODBC zutuen hat.
Danach habe ich "sudo apt-get install unixodbc-dev unixodbc-bin unixodbc" installiert und es scheint zu funktionieren.
Trotzdem brauche ich eigentlich kein ODBC unter Linux.
(Ist schon ganz schön nervig mit dieser Treiber-Geschichte)
100% zufrieden bin ich aber noch nicht, weil ich bis jetzt nur bis zu dieser Fehlermeldung gekommen bin:
"Can't open database !"
Ich hatte es auch erst mit "unixodbc" probiert, da lieferte PureBasic aber nur haufen Fehlermeldungen das es Funktion "xyz" nicht finden kann.
Mit den umgenannten "iodbc" - Libs ging es dann.
PureBasic konnte die Lib finden und linken.
Aber eine Erstellung/Verbindung zu einer Datenbank war unmöglich.
Ich habe dann mal komplett aufgeräumt und jetzt auch teilweise manuell Pakete aus dem Verzeichnis "/var/lib/dpkg/info" gelöscht, weil Synaptic sich absolut weigerte Abhängigkeiten aufzulösen/ bzw. Pakete auch nicht mehr mit "--force" deinstallierte.
Ich habe dann fehlerhafte "odbc-Dateien" manuell gelöscht und alles was mit ODBC zutuen hat.
Danach habe ich "sudo apt-get install unixodbc-dev unixodbc-bin unixodbc" installiert und es scheint zu funktionieren.
Trotzdem brauche ich eigentlich kein ODBC unter Linux.
(Ist schon ganz schön nervig mit dieser Treiber-Geschichte)
100% zufrieden bin ich aber noch nicht, weil ich bis jetzt nur bis zu dieser Fehlermeldung gekommen bin:
"Can't open database !"
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: ODBC-Datenbankzugriff unter Linux für Dummies
Ist schon nervig das mit den Datenbanken zum zu laufen bekommen (Bis jetzt noch nicht hin bekommen)
Bis jetzt habe ich das auch nicht gebraucht und verwende in der Regel SQLite.
Dafür funktioniert jetzt aber MySQL mit "libmariadb.so" für Linux und "libmariadb.dylib" für MacOS, sowie "libmariadb.dll".
Ich habe ein Buffalo-NAS mit MySQL Datenbank. Funktioniert super schnell.
Bis jetzt habe ich das auch nicht gebraucht und verwende in der Regel SQLite.
Dafür funktioniert jetzt aber MySQL mit "libmariadb.so" für Linux und "libmariadb.dylib" für MacOS, sowie "libmariadb.dll".
Ich habe ein Buffalo-NAS mit MySQL Datenbank. Funktioniert super schnell.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: ODBC-Datenbankzugriff unter Linux für Dummies
Hallo mk-soft,
ja das klingt interessant.
Warum gibt es eigentlich laut Hilfe eine Konstante "#PB_Database_MySQL", die PureBasic aber garnicht kennt ?
ja das klingt interessant.
Warum gibt es eigentlich laut Hilfe eine Konstante "#PB_Database_MySQL", die PureBasic aber garnicht kennt ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: ODBC-Datenbankzugriff unter Linux für Dummies
Da hat wohl jemand geschlafenWarum gibt es eigentlich laut Hilfe eine Konstante "#PB_Database_MySQL", die PureBasic aber garnicht kennt ?
PB sollte die eigentlich kennen. Dient der Nutzung der MySQL Datenbank, wenn OpenDatabase()
Wird wahrscheinlich = 4 sein.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Re: ODBC-Datenbankzugriff unter Linux für Dummies
Es ist Vier...
P.S.
Ach ja,
Für MacOS verwende ich das Tool MyAppData um die Lib mit in die App zu packen...
Link: https://www.purebasic.fr/english/viewto ... 19&t=61638
Code: Alles auswählen
;-TOP
;IncludeFile "mysql.pbi"
; ---------------------------------------------------------------------------------------
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
Procedure.s GetAppPath()
Protected bundlePathPtr = CocoaMessage(0,CocoaMessage(0,CocoaMessage(0,0,"NSBundle mainBundle"),"bundlePath"),"UTF8String")
If bundlePathPtr
Protected bundlePath.s = PeekS(bundlePathPtr,-1,#PB_UTF8) + "/"
EndIf
ProcedureReturn bundlePath
EndProcedure
; ---------------------------------------------------------------------------------------
Procedure.s GetResourcePath()
Protected bundlePathPtr = CocoaMessage(0,CocoaMessage(0,CocoaMessage(0,0,"NSBundle mainBundle"),"resourcePath"),"UTF8String")
If bundlePathPtr
Protected bundlePath.s = PeekS(bundlePathPtr,-1,#PB_UTF8) + "/"
EndIf
ProcedureReturn bundlePath
EndProcedure
; ---------------------------------------------------------------------------------------
libdb.s = GetAppPath() + "Contents/Library/libmariadb.dylib"
If UseMySQLDatabase(libdb) = 0
Debug "Error MySQL"
End
EndIf
CompilerElse
If UseMySQLDatabase() = 0
Debug "Error MySQL"
End
EndIf
CompilerEndIf
UseSQLiteDatabase()
Procedure CheckDatabaseUpdate(Database, Query$)
Result = DatabaseUpdate(Database, Query$)
If Result = 0
Debug "Error Update: " + DatabaseError() + #LF$ + Query$
EndIf
ProcedureReturn Result
EndProcedure
Procedure CheckDatabaseQuery(Database, Query$)
Result = DatabaseQuery(Database, Query$)
If Result = 0
Debug "Error Query: " + DatabaseError() + #LF$ + Query$
EndIf
ProcedureReturn Result
EndProcedure
database.s = "host=server port=3306 dbname=developer"
user.s = "developer"
pass.s = "purebasic"
CompilerIf Defined(PB_Database_MySQL, #PB_Constant) = 0
#PB_Database_MySQL = 4
CompilerEndIf
If OpenDatabase(0, database, user, pass, #PB_Database_MySQL)
CheckDatabaseUpdate(0, "CREATE TABLE IF NOT EXISTS food (name CHAR(50), weight INT)")
CheckDatabaseUpdate(0, "DELETE FROM food")
CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('apple', '12')")
CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('pear', '5')")
CheckDatabaseUpdate(0, "INSERT INTO food (name, weight) VALUES ('banana', '25')")
If CheckDatabaseQuery(0, "SELECT * FROM food WHERE weight > 0")
While NextDatabaseRow(0)
Debug "Food = " + GetDatabaseString(0, 0) + " Weight = " + GetDatabaseLong(0, 1)
Wend
FinishDatabaseQuery(0)
EndIf
CloseDatabase(0)
Else
Debug "Can't open database !"
CallDebugger
EndIf
Ach ja,
Für MacOS verwende ich das Tool MyAppData um die Lib mit in die App zu packen...
Link: https://www.purebasic.fr/english/viewto ... 19&t=61638
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: ODBC-Datenbankzugriff unter Linux für Dummies
Hallo!
Ja 4 stimmt!
Das mit dem MySQL /MariaDB ist toll, weil es funktioniert und schneller ist als SQLLite.
Aber auch viel umständlicher mit der Konfigurierung.
Ich musste erst ein Passwort für den Benutzer "root" setzten, weil sonst kein Zugriff möglich war.
Auch konnte ich keine Verbindung über "localhost" herstellen, sondern musste "host=127.0.0.1" schreiben. (Was eigentlich das selbe ist, oder ?)
Mit einem anderen angelegten Benutzer (außer root) konnte ich bisher noch keine Verbindung aufbauen.
Aber ich kann jetzt wenigstens ohne "sudo " einfach nur per "mysql" auf das "Config-Tool" zugreifen.
Ja 4 stimmt!
Das mit dem MySQL /MariaDB ist toll, weil es funktioniert und schneller ist als SQLLite.
Aber auch viel umständlicher mit der Konfigurierung.
Ich musste erst ein Passwort für den Benutzer "root" setzten, weil sonst kein Zugriff möglich war.
Auch konnte ich keine Verbindung über "localhost" herstellen, sondern musste "host=127.0.0.1" schreiben. (Was eigentlich das selbe ist, oder ?)
Mit einem anderen angelegten Benutzer (außer root) konnte ich bisher noch keine Verbindung aufbauen.
Aber ich kann jetzt wenigstens ohne "sudo " einfach nur per "mysql" auf das "Config-Tool" zugreifen.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat