Hallo.
Ich hab da gerade ein Problem an dem ich mir die Zähne ausbeisse...
Mit PB4.61 x86 , installierter MySQL ODBC 3.51 Driver (32Bit), Win7 x64 krieg ich "on the fly"
keine DSN eingetragen, die ich dann auch nutzen kann.
(Xampp als MySQL Server also localhost mit port 3306)
Wenn ich die DSN mit dem Connector erstelle klappt das allerdings.
Ich habe diverse Methoden ausprobiert (Beispiel von Rings&bobobo, PBOSL_Exdatabase)
Auch den Admin Modus anfordern brachte keinen Eintrag unter Verwaltung\ODBC Datenquellen
Wie bekommt man das in PB hin (bei obiger Konfiguration) das ich eine ODBC DB öffnen kann ?
Mit PB4.3 und XP funktionierte das noch...
Wie eine DSN on the fly erstellen ?
Wie eine DSN on the fly erstellen ?
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
Re: Wie eine DSN on the fly erstellen ?
a²+b²=mc²
Re: Wie eine DSN on the fly erstellen ?
Eine Lösung kann ich dir nicht direkt anbieten, da ich hier nicht deine Konfiguration habe. Aber vielleicht hilft dir folgendes Beispiel und Links weiter.
http://msdn.microsoft.com/en-us/library ... 05%29.aspx
http://msdn.microsoft.com/en-us/library ... 80%29.aspx
ODBC Connection String Structure Specification
http://msdn.microsoft.com/en-us/library ... 05%29.aspx
http://msdn.microsoft.com/en-us/library ... 80%29.aspx
ODBC Connection String Structure Specification
Code: Alles auswählen
;
; Konfig-Datei mit folgenden Keys erstellen
; Werte können natürlich nur Beispiele sein
;
; [ODBC]
; DSN = TimeStamp
; SERVER = 127.0.0.1
; ADDRESS = 127.0.0.1,3306
; DESCRIPTION = OSArbeitszeit
; DATABASE = Timestampsql
; DRIVER = MySQL ODBC 3.51 Driver
; QUERYLOG_ON = yes
; QUERYLOGFILE = c:\ODBCquery.log
; QUERYLOGTIME = 1
; STATSLOG_ON = yes
; STATSLOGFILE = c:\ODBCPerformance.log
; TRUSTED_CONNECTION = 0
; UID = Username
; PWD = Password
Procedure OSCreateODBC(Map ODBCAttrib.s())
strAttrib.s=""
lpszDriver.s=ODBCAttrib("DRIVER")
DeleteMapElement(ODBCAttrib(),"DRIVER")
If FindMapElement(ODBCAttrib(),"TRUSTED_CONNECTION")
If ODBCAttrib("TRUSTED_CONNECTION")="1" Or LCase(ODBCAttrib("TRUSTED_CONNECTION"))="yes"
DeleteMapElement(ODBCAttrib(),"UID")
DeleteMapElement(ODBCAttrib(),"PWD")
EndIf
EndIf
ResetMap(ODBCAttrib())
While NextMapElement(ODBCAttrib())
strAttrib.s+MapKey(ODBCAttrib())+"="+ODBCAttrib(MapKey(ODBCAttrib()))+";"
Wend
strAttrib+";"
FreeMap(ODBCAttrib())
*Buffer=AllocateMemory(Len(strAttrib))
CopyMemory(@strAttrib,*Buffer,Len(strAttrib))
For L=0 To Len(strAttrib)-1
If PeekB(*Buffer+L)=';'
PokeB(*Buffer+L,0)
EndIf
Next L
Result = SQLConfigDataSource_(0,#ODBC_ADD_DSN,lpszDriver.s,*Buffer )
FreeMemory(*Buffer)
ProcedureReturn Result
EndProcedure
NewMap ODBCAttr.s()
If Not OpenPreferences(MyConfigFile$)
MessageRequester("ACHTUNG","Keine Konfig-Datei vorhanden!",#PB_MessageRequester_Ok)
End
EndIf
If Not PreferenceGroup("ODBC")
MessageRequester("ACHTUNG","Keine ODBC-Daten vorhanden!",#PB_MessageRequester_Ok)
End
EndIf
ExaminePreferenceKeys()
While NextPreferenceKey()
Name.s=PreferenceKeyName()
ODBCAttr(UCase(Name))=PreferenceKeyValue()
Wend
ClosePreferences()
If Not OSCreateODBC(ODBCAttr())
MessageRequester("ACHTUNG","Erstellen/Änderung der User-ODBC fehlgeschlagen!",#PB_MessageRequester_Ok)
End
Else
MessageRequester("Info","Erfolgreich User-ODBC erstellt bzw. geändert!",#PB_MessageRequester_Ok)
EndIf
Re: Wie eine DSN on the fly erstellen ?
Dank euch beiden. Erfolg hatte ich bereits mit einigen Abwandlungen der srod-Methode mit einem Schwung shire 
Und weiterhin hab ich sogar noch ein bisschen "Extras" herausgefunden (Die Optionflags)
Hier mal mein "Rezept" für ebenfalls suchende...
ist zwar auf nix getestet (Unicode usw) aber für mal eben funktioniert es... Wenn bessere Versionen erdacht werden, immer her damit 

Und weiterhin hab ich sogar noch ein bisschen "Extras" herausgefunden (Die Optionflags)
Hier mal mein "Rezept" für ebenfalls suchende...
Code: Alles auswählen
;@____________________________________________________________________________________________________
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
; »»»
; »»» MySQL ODBC 3.51 Connector
; »»»
; ____________________________________________________________________________________________________
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
EnableExplicit
;
#ODBC_ADD_DSN = 1
#ODBC_CONFIG_DSN = 2
#ODBC_REMOVE_DSN = 3
;
; Option Flags for ODBC MYSQL
; Link : http://dev.mysql.com/doc/refman/5.0/en/connector-odbc-configuration-connection-parameters.html
; dort kann man weitere Flags finden
;
#FLAG_FIELD_LENGTH = 1
#FLAG_FOUND_ROWS = 2
#FLAG_COMPRESSED_PROTO = 2048
;
#ODBC_OPTION_FLAGS = #FLAG_FIELD_LENGTH|#FLAG_FOUND_ROWS|#FLAG_COMPRESSED_PROTO
; ____________________________________________________________________________________________________
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Procedure.i ODBC_AddConnection(ConnectionString.s)
; Idea : shire
; Link : http://www.purebasic.fr/english/viewtopic.php?p=371161#p371161
Protected Result
Result = SQLConfigDataSource_(0, #ODBC_ADD_DSN, "MySQL ODBC 3.51 Driver", ConnectionString)
ProcedureReturn Result
EndProcedure
; ____________________________________________________________________________________________________
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Procedure.i ODBC_RemoveConnection(DSN.s)
; srod
Protected Result
Result=SQLConfigDataSource_(0,#ODBC_REMOVE_DSN,"MySQL ODBC 3.51 Driver","DSN="+DSN)
If Result
ProcedureReturn #True
EndIf
EndProcedure
; ____________________________________________________________________________________________________
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Procedure.s CreateDNS(DSN.s, User.s, Pass.s, Database.s, Server.s="localhost", Port = 3306, OptionFlags = #ODBC_OPTION_FLAGS, Description.s = "Description")
; mein bescheidener Beitrag (Eigentlich nur für MySQL 3.51, evt. auch für 5 funktionieren
Protected CS.s = "", Result
CS = "DSN=" + DSN + "; "
CS + "DESCRIPTION=" + Description + "; "
CS + "SERVER=" + Server + "; "
CS + "PORT=" + Str(Port) + "; "
CS + "USER=" + User + "; "
CS + "PASSWORD=" + Pass + "; "
CS + "DATABASE=" + Database + "; "
CS + "OPTION=" + Str(OptionFlags)
Result = ODBC_AddConnection(CS)
If Result
ProcedureReturn DSN
Else
MessageRequester("Error","Check your Data")
ProcedureReturn ""
EndIf
EndProcedure
; ____________________________________________________________________________________________________
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
; Beispiel
;
Define DSN.s
DSN = CreateDNS("Meine-DSN","Username","Passwort","Datenbankname","localhost",3306,#ODBC_OPTION_FLAGS,"Beschreibung")
; ODBC_RemoveConnection(DSN)

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
Re: Wie eine DSN on the fly erstellen ?
Schon etwas älter, funktioniert als Include "ExDatabase.pbi" aber immer noch
http://www.purebasic.fr/german/viewtopi ... n&start=50
http://home.arcor.de/m_kastner/MyDownlo ... taBase.zip
FF
http://www.purebasic.fr/german/viewtopi ... n&start=50
http://home.arcor.de/m_kastner/MyDownlo ... taBase.zip
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
Re: Wie eine DSN on the fly erstellen ?
Diese Include hat bei mir leider keine DSN erstellt. Die hatte ich zuerst probiert, weil ich die früher immer genutzt hatte.mk-soft hat geschrieben:Schon etwas älter, funktioniert als Include "ExDatabase.pbi" aber immer noch
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
Re: Wie eine DSN on the fly erstellen ?
Nur 32Bit !!!
Unter 64Bit funktioniert alles anders...
Unter 64Bit funktioniert alles anders...
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