PureBasic und MySQL
na wenn du das sagst...
ist halt schon etwas her.. dass ich das mit odbc gemacht habe.. aber es sollte so sein, dass du die DSN eben on the fly erstellst. Und somit auch Username und passwort mitgibst.
what ever..
Ich arbeite seit längerem mit der libmysql.. das geht sehr gut. ist aber etwas aufwändiger als mit odbc.
ist halt schon etwas her.. dass ich das mit odbc gemacht habe.. aber es sollte so sein, dass du die DSN eben on the fly erstellst. Und somit auch Username und passwort mitgibst.
what ever..
Ich arbeite seit längerem mit der libmysql.. das geht sehr gut. ist aber etwas aufwändiger als mit odbc.
Win10/64|Ubuntu-Server|Mint WS // Programmiere Datenbankanwendungen und Tools mit PB-5.x und MySQL-5.x unter Win und Linux
Das On-the-Fly-Ding hatte ich auch immer benutzt, bis mir dann
aufgegangen ist , dass eine hinterlegte REG-Datei mit den
entsprechenden Einstellungen genausogut zur Einrichtung einer
ODBC-Verbindung taugt (zumindest bei win2k bis XP hat das bisher
immer bestens funktioniert).
Diese Reg-Datei dann mit
'regedit -s dateiname.reg'
in die Registrierung einpflegen.
Wirkt instant.
Die RegDatei exportiert man sich dazu mal aus der Registrierung.
Wo die Einträge in der Registrierung liegen, sollte man sich dazu mal
selber aus der Registrierung raussuchen.
@Velz
Und Username und Passwort werden nicht in der ODBC-Verbindung
angegeben, sondern dort nur für eine optionale Testverbindung
optional gebraucht und zum Einrichten von dB-spezifischen Geschichten.
Die ODBC-Verbindung enthält eigentlich nur die Treiberangabe, den Ort
der Datenbank (ist Treiberspezifisch) und ein paar Sachen bezüglich
des Datenaustauschs per ODBC.
Letztlich wird der Username und Passwort bei der Ansprache
mit den PB-Database-Funktionen erst gebraucht. (und natürlich beim
Einrichten der Datenbank selber)
aufgegangen ist , dass eine hinterlegte REG-Datei mit den
entsprechenden Einstellungen genausogut zur Einrichtung einer
ODBC-Verbindung taugt (zumindest bei win2k bis XP hat das bisher
immer bestens funktioniert).
Diese Reg-Datei dann mit
'regedit -s dateiname.reg'
in die Registrierung einpflegen.
Wirkt instant.
Die RegDatei exportiert man sich dazu mal aus der Registrierung.
Wo die Einträge in der Registrierung liegen, sollte man sich dazu mal
selber aus der Registrierung raussuchen.
@Velz
Und Username und Passwort werden nicht in der ODBC-Verbindung
angegeben, sondern dort nur für eine optionale Testverbindung
optional gebraucht und zum Einrichten von dB-spezifischen Geschichten.
Die ODBC-Verbindung enthält eigentlich nur die Treiberangabe, den Ort
der Datenbank (ist Treiberspezifisch) und ein paar Sachen bezüglich
des Datenaustauschs per ODBC.
Letztlich wird der Username und Passwort bei der Ansprache
mit den PB-Database-Funktionen erst gebraucht. (und natürlich beim
Einrichten der Datenbank selber)
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
eieiei... nun kann ich dir endlich folgen
allerdings wenn ich in
->Verwaltung->Datenquellen eine DSN anlegen will, MUSS ich zumindest einen Benutzer und so weiter eingeben, sonst lässt der mich nicht auf Ok klicken.... allerdings das PW Feld darf freibleiben... (das ich das nich schon vorher probiert hab...
)
Registry schlüssel ... ok ich bin schon etwas älter und die brille find ich nicht
wo steckt denn der.... ?

->Verwaltung->Datenquellen eine DSN anlegen will, MUSS ich zumindest einen Benutzer und so weiter eingeben, sonst lässt der mich nicht auf Ok klicken.... allerdings das PW Feld darf freibleiben... (das ich das nich schon vorher probiert hab...

Registry schlüssel ... ok ich bin schon etwas älter und die brille find ich nicht

Hach... Selbsterkenntnis....
Hab "MSSQL_ODBC-DSN_on-the-fly.pb" nun doch zum laufen bekommen...
War ein kleines Problem mit den Anmeldedaten... die sind aber auch konfus durcheinander da drin
Ausserdem steht der Eintrag dann nicht in Benutzer DSN sondern in System DNS...
Änderungen :
ändern in ...
XAMPP lässt grüssen (funktioniert natürlich auch per I-Net
)
und nun funktionierts... boah schwere Geburt
Danke bobobo
Hab "MSSQL_ODBC-DSN_on-the-fly.pb" nun doch zum laufen bekommen...
War ein kleines Problem mit den Anmeldedaten... die sind aber auch konfus durcheinander da drin

Ausserdem steht der Eintrag dann nicht in Benutzer DSN sondern in System DNS...
Änderungen :
Code: Alles auswählen
DRIVER$="SQL Server"
SERVER$="MEIN-MS-SQL-SERVER"
ADDRESS$="127.0.0.1,1433"
Code: Alles auswählen
DRIVER$="MySQL ODBC 3.51 Driver" ; Der Name des Treibers...
SERVER$="localhost" ; Server wo die DB ist...
ADDRESS$="localhost,3306" ;Der Standardport MySQL ist 3306 !!!

und nun funktionierts... boah schwere Geburt


Suche MySQL hätte gereicht
Gerade erst Upgedatet
http://www.purebasic.fr/german/viewtopi ... ight=mysql
FF

Gerade erst Upgedatet
http://www.purebasic.fr/german/viewtopi ... ight=mysql
FF

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
Wer lesen kann ist im Vorteil, Sorry 
EDIT + UPDATE (StringField)
Zur Entschuldigung das ganze mal für PB 3.30
FF 

EDIT + UPDATE (StringField)
Zur Entschuldigung das ganze mal für PB 3.30
Code: Alles auswählen
;-TOP
; Kommentar : DSN Helper für Purebasic 3.30
; Version : v1.03
; Author : Michael Kastner
; Datei : DsnHelper.pb
; Erstellt : 28.09.2006
; Geändert : 03.08.2007
; ***************************************************************************************
;Enumeration 1
#ODBC_ADD_DSN = 1 ; // Add data source
#ODBC_CONFIG_DSN = 2 ; // Configure (edit) Data source
#ODBC_REMOVE_DSN = 3 ; // Remove data source
#ODBC_ADD_SYS_DSN = 4 ; // add a system DSN
#ODBC_CONFIG_SYS_DSN = 5 ; // Configure a system DSN
#ODBC_REMOVE_SYS_DSN = 6 ; // remove a system DSN
#ODBC_REMOVE_DEFAULT_DSN = 7 ; // remove the default DSN
;EndEnumeration
; ***************************************************************************************
Procedure.s AddDSN(databasename.s, user.s, pass.s, driver.s, server.s) ; Result DSN
Protected name.s, strDriver.s, strAttributes.s
Protected L.l, result.l
Protected *buffer
; Serer Default
If server = ""
server = "localhost"
EndIf
; Databasename erzeugen (DSN)
name.s = GetFilePart(databasename)
name = Left(name.s, Len(name.s) - 4)
name = "Pure" + UCase(name)
; Bei fehlenden driver automatisch wählen
If driver = ""
driver = GetExtensionPart(databasename)
EndIf
; Datenbanktreiber auswählen
Select UCase(driver)
Case "MYSQL"
name = "Pure" + UCase(databasename)
strDriver.s = "MySQL ODBC 3.51 Driver"
; Attributes zustellen
strAttributes.s = "Server=" + server
strAttributes.s + ";Description=" + name
strAttributes.s + ";DSN=" + name
strAttributes.s + ";DATABASE=" + databasename
strAttributes.s + ";UID=" + user
strAttributes.s + ";PWD=" + pass + ";"
Case "MDB"
strDriver.s = "Microsoft Access Driver (*.mdb)"
; Attributes zustellen
strAttributes.s = "Server=APServer;Description=" + name
strAttributes.s + ";DSN=" + name
strAttributes.s + ";DBQ=" + databasename
strAttributes.s + ";UID=" + user
strAttributes.s + ";PWD=" + pass + ";"
Case "XLS"
strDriver.s = "Microsoft Excel Driver (*.xls)"
; Attributes zustellen
strAttributes.s = "Server=APServer;Description=" + name
strAttributes.s + ";DSN=" + name
strAttributes.s + ";DBQ=" + databasename
strAttributes.s + ";UID=" + user
strAttributes.s + ";PWD=" + pass + ";"
Case "DBF"
strDriver.s = "Microsoft dBase Driver (*.dbf)"
; Attributes zustellen
strAttributes.s = "Server=APServer;Description=" + name
strAttributes.s + ";DSN=" + name
strAttributes.s + ";DBQ=" + GetPathPart(databasename)
strAttributes.s + ";UID=" + user
strAttributes.s + ";PWD=" + pass + ";"
Case "TXT"
strDriver.s = "Microsoft Text Driver (*.txt; *.csv)"
; Attributes zustellen
strAttributes.s = "Server=APServer;Description=" + name
strAttributes.s + ";DSN=" + name
strAttributes.s + ";DBQ=" + GetPathPart(databasename)
strAttributes.s + ";UID=" + user
strAttributes.s + ";PWD=" + pass + ";"
Case "CSV"
strDriver.s = "Microsoft Text Driver (*.txt; *.csv)"
; Attributes zustellen
strAttributes.s = "Server=APServer;Description=" + name
strAttributes.s + ";DSN=" + name
strAttributes.s + ";DBQ=" + GetPathPart(databasename)
strAttributes.s + ";UID=" + user
strAttributes.s + ";PWD=" + pass + ";"
Default
strDriver.s = driver
EndSelect
*buffer = @strAttributes
For L = 0 To Len(strAttributes) - 1
If PeekB(*buffer) = Asc(";")
PokeB(*buffer, 0)
EndIf
*buffer + 1
Next L ; Check the next byte
result = SQLConfigDataSource_(0, #ODBC_ADD_DSN, strDriver, @strAttributes) ; Call the function you need from the ODBC library with the right details
If result
ProcedureReturn name
Else
ProcedureReturn ""
EndIf
EndProcedure
; ***************************************************************************************
Procedure.l RemoveDSN(databasename.s, user.s, pass.s, driver.s)
Protected name.s, strDriver.s, strAttributes.s
Protected L.l, result.l
Protected *buffer
; Databasename erzeugen
name = GetFilePart(databasename)
name = Left(name, Len(name) - 4)
name = "Pure" + UCase(name)
; Bei fehlenden driver automatisch wählen
If driver = ""
driver = GetExtensionPart(databasename)
EndIf
; Datenbanktreiber auswählen
Select UCase(driver)
Case "MYSQL"
name = "Pure" + UCase(databasename)
strDriver.s = "MySQL ODBC 3.51 Driver"
Case "MDB"
strDriver = "Microsoft Access Driver (*.mdb)"
Case "XLS"
strDriver = "Microsoft Excel Driver (*.xls)"
Case "DBF"
strDriver = "Microsoft dBase Driver (*.dbf)"
Case "TXT"
strDriver = "Microsoft Text Driver (*.txt; *.csv)"
Case "CSV"
strDriver = "Microsoft Text Driver (*.txt; *.csv)"
Default
strDriver = driver
EndSelect
; Attributes zustellen
strAttributes = "DSN=" + name + ";"
*buffer = @strAttributes
For L = 0 To Len(strAttributes) - 1
If PeekB(*buffer) = Asc(";")
PokeB(*buffer, 0)
EndIf
*buffer + 1
Next L ; Check the next byte
result = SQLConfigDataSource_(0, #ODBC_REMOVE_DSN, strDriver, @strAttributes) ; Call the function you need from the ODBC library with the right details
ProcedureReturn result
EndProcedure
; ***************************************************************************************
Procedure.s GetTables(Datenbank)
Protected hwnd.l, r1.l, len.l
Protected *buffer
Protected result.s
hwnd = UseDatabase(Datenbank)
result.s = ""
If hwnd
r1 = SQLTables_(hwnd,0,0,0,0,0,0,0,0) & $FFFF
If r1 = 0 Or r1 = 1
*buffer = AllocateMemory(0,256)
SQLBindCol_(hwnd,3,1,*buffer,256,@len)
While SQLFetch_(hwnd) & $FFFF = 0
result + PeekS(*buffer, len) + ";"
Wend
FreeMemory(0)
EndIf
EndIf
ProcedureReturn result
EndProcedure
; ***************************************************************************************
; test
Procedure.s StringField(Quell.s, Trenn.s, Pos.l)
Protected pos_start, pos_end, len, i
pos_start = 0
pos_end = 0
While i < pos
i + 1
pos_start = pos_end + 1
pos_end = FindString(Quell, Trenn, pos_start)
If pos_end = 0
pos_end = Len(quell) + 1
EndIf
Wend
len = pos_end - pos_start
ProcedureReturn Mid(Quell, pos_start, len)
EndProcedure
InitDatabase()
temp.s = AddDSN("information_schema", "root", "admin", "mysql", "")
Debug temp
If OpenDatabase(0, temp, "root", "admin")
list.s = GetTables(0)
Repeat
i + 1
temp.s = StringField(list,";", i)
Debug temp
Until temp = ""
Else
Debug "Not Found"
EndIf
RemoveDSN("information_schema", "root", "admin", "mysql")

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