ODBC MySQL
Moderator: Moderatoren
ODBC MySQL
Hi,
ich möchte mich an einen WebShop hängen. Dieser nutzt MySQL Tabellen. Per ODBC komme ich an die Tabelle ran, kann lesen aber leider nicht schreiben. Mit MsSQL geht via ODBC wesentlich mehr.
Hat jemand schon Erfahrung, mit ODBC und MySQL?
Grüße
Ulrich
ich möchte mich an einen WebShop hängen. Dieser nutzt MySQL Tabellen. Per ODBC komme ich an die Tabelle ran, kann lesen aber leider nicht schreiben. Mit MsSQL geht via ODBC wesentlich mehr.
Hat jemand schon Erfahrung, mit ODBC und MySQL?
Grüße
Ulrich
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: ODBC MySQL
ja, mit SQLexpress() und mit PowerBasic.
ODBC erlaubt auf jeden Fall das Schreiben, solange du genug RECHTE auf dem SQL-Server hast
ODBC erlaubt auf jeden Fall das Schreiben, solange du genug RECHTE auf dem SQL-Server hast
Gruß
Hubert
Hubert
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Re: ODBC MySQL
Hallo,
habe vieles mit SQLexpress von Boris gemacht, funktioniert sehr gut. Gibt auch eine Klasse von Hector Pezoa mit Ot4xb, funktioniert auch einwandfrei und basiert auf MySqllib.dll, Vorteil ist dass es kostenlos ist und ohne ODBC funktioniert.
Grüße
Rudolf
habe vieles mit SQLexpress von Boris gemacht, funktioniert sehr gut. Gibt auch eine Klasse von Hector Pezoa mit Ot4xb, funktioniert auch einwandfrei und basiert auf MySqllib.dll, Vorteil ist dass es kostenlos ist und ohne ODBC funktioniert.
Grüße
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 98 Mal
- Danksagung erhalten: 13 Mal
Re: ODBC MySQL
Hallo, Ulrich -
welche Version des ODBC-Treibers hast Du im Einsatz? Arbeitest Du mit einer Datei- oder System-DSN? Wie sehen die Parameter aus?
Ich greife auf verschiedene MySQL-Datenbanken auf Servern in verschiedenen Ländern zu (ich verwende dazu Hector's Klasse, die ich Dir in meiner angepassten Version gerne zur Verfügung stelle) und kann ALLES machen, und das rasant, mit einem lokal laufenden Xbase++-Programm.
welche Version des ODBC-Treibers hast Du im Einsatz? Arbeitest Du mit einer Datei- oder System-DSN? Wie sehen die Parameter aus?
Ich greife auf verschiedene MySQL-Datenbanken auf Servern in verschiedenen Ländern zu (ich verwende dazu Hector's Klasse, die ich Dir in meiner angepassten Version gerne zur Verfügung stelle) und kann ALLES machen, und das rasant, mit einem lokal laufenden Xbase++-Programm.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Re: ODBC MySQL
Ich habe verschiedene ODBC MySQL Treiber versucht alle mit dem selben Ergebnis.
Der Zugriff klappt, da ich die Daten lesen kann, aber leider nicht schreiben.
Es gibt eine Klasse? Klasse.
Ich freue mich sehr, wenn Du mir die zur Verfügung stellen könntest.
Gibt es eine Beschreibung oder ein paar Beispiele zu Hectors Klasse?
Grundsätzlich dachte ich, dass in der Version 2.0 SQL via ODBC besser unterstützt wird.
Schönen Abend wünscht
Ulrich
Der Zugriff klappt, da ich die Daten lesen kann, aber leider nicht schreiben.
Es gibt eine Klasse? Klasse.
Ich freue mich sehr, wenn Du mir die zur Verfügung stellen könntest.
Gibt es eine Beschreibung oder ein paar Beispiele zu Hectors Klasse?
Grundsätzlich dachte ich, dass in der Version 2.0 SQL via ODBC besser unterstützt wird.
Schönen Abend wünscht
Ulrich
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 98 Mal
- Danksagung erhalten: 13 Mal
Re: ODBC MySQL
Hallo, Ulrich -
hier findest Du etliches zu dem Thema, ich stelle Dir mal ein Archiv mit der aktuellen Version zusammen.
http://www.xbaseforum.de/viewtopic.php?f=16&t=6624
hier findest Du etliches zu dem Thema, ich stelle Dir mal ein Archiv mit der aktuellen Version zusammen.
http://www.xbaseforum.de/viewtopic.php?f=16&t=6624
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Re: ODBC MySQL
Hallo Georg,
vielen Dank für den Hinweis. Ich habe das jetzt mal in unser Programm integriert. Connect zu einer MySQL Instanz funktioniert insoweit. Aber eof() scheint nicht zu funktionieren. Dass muss ich mir anschauen.
Leider klappt es auch nicht mit der aktuellen libmysql.dll, hier bekomme ich auch einen Fehler. Auch das muss ich mir anschauen....
Die Arbeit will einfach nicht aufhören.
Gibt es eigentlich eine Funktionsübersicht?
Grüße
Ulrich
vielen Dank für den Hinweis. Ich habe das jetzt mal in unser Programm integriert. Connect zu einer MySQL Instanz funktioniert insoweit. Aber eof() scheint nicht zu funktionieren. Dass muss ich mir anschauen.
Leider klappt es auch nicht mit der aktuellen libmysql.dll, hier bekomme ich auch einen Fehler. Auch das muss ich mir anschauen....
Die Arbeit will einfach nicht aufhören.
Gibt es eigentlich eine Funktionsübersicht?
Grüße
Ulrich
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: ODBC MySQL
Bei allem was man als Quellcode bekommt ist zwischen CLASS ... ENDCLASS alles erwähnt was es in der Klasse gibt.Ulrich hat geschrieben:Gibt es eigentlich eine Funktionsübersicht?
Dann noch nach FUNCTION suchen und sehen was da steht ... notfalls die aufgerufenen Funktionen bei MySQL suchen ...
Das ist meist besser und immer aktueller als jede Dokumentation
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 98 Mal
- Danksagung erhalten: 13 Mal
Re: ODBC MySQL
Hallo, Ulrich -
welche Version von MySQL setzt Du ein? 32 oder 64 bit? Xbase++ ist 32bit, daher kann es auch nur mit 32bit DLLs kommunizieren. Wenn Du einen 64bit MySQL-Server einsetzt, dann ist die mitgelieferte libmysql.dll auch 64bit.
Hector hat einen anderen Ansatz gewählt, was die Behandlung von eof() angeht - meine Anpassung behebt das so, dass die API sich so verhält, wie man es von einer dbf-Datei gewöhnt ist (insbesondere wirkt sich das ja z.B. bei der Browse-Steuerung aus).
Es wäre an dieser Stelle nicht schlecht, wenn Du ein kleines Beispiel liefern könntest, und angibst, welche Version Du verwendest.
Wenn ich im Urlaub bin, werde ich mich mal dran machen und eine neue Version bereitstellen, da ich noch einige Erweiterungen vorgenommen habe (die ich auch an Hector kommuniziert habe), insbesondere, was die Verbindung und den dabei verwendeten Character Set angeht.
Und Hector versucht gerade, prepared statements zu implementieren. Aber dazu mehr, wenn's geklappt hat.
welche Version von MySQL setzt Du ein? 32 oder 64 bit? Xbase++ ist 32bit, daher kann es auch nur mit 32bit DLLs kommunizieren. Wenn Du einen 64bit MySQL-Server einsetzt, dann ist die mitgelieferte libmysql.dll auch 64bit.
Hector hat einen anderen Ansatz gewählt, was die Behandlung von eof() angeht - meine Anpassung behebt das so, dass die API sich so verhält, wie man es von einer dbf-Datei gewöhnt ist (insbesondere wirkt sich das ja z.B. bei der Browse-Steuerung aus).
Es wäre an dieser Stelle nicht schlecht, wenn Du ein kleines Beispiel liefern könntest, und angibst, welche Version Du verwendest.
Wenn ich im Urlaub bin, werde ich mich mal dran machen und eine neue Version bereitstellen, da ich noch einige Erweiterungen vorgenommen habe (die ich auch an Hector kommuniziert habe), insbesondere, was die Verbindung und den dabei verwendeten Character Set angeht.
Und Hector versucht gerade, prepared statements zu implementieren. Aber dazu mehr, wenn's geklappt hat.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: ODBC MySQL
könnte es sein das du eine SSL Version für den Online Zugriff benötigst ?Ulrich hat geschrieben:Leider klappt es auch nicht mit der aktuellen libmysql.dll, hier bekomme ich auch einen Fehler. Auch das muss ich mir anschauen....
wenn ja frage mal 'Hans Zethofer' nach seinen SSL libmysql.dll
gruss by OHR
Jimmy
Jimmy
Re: ODBC MySQL
Hallo, UlrichUlrich hat geschrieben:Hat jemand schon Erfahrung, mit ODBC und MySQL?
ja, ich habe die ODBC-Funktionen in der CTP getestet, ging gut
Hast du die 2.0 professional ? Dann kannst du direkt so arbeiten mit ODBC, sonst geht`s nur mit externen Tools !
Was deinen Schreib-Zugriff angeht : Wie ist die Verbindung zu MySql, oder testest du noch lokal ?
Eigentlich ist das Schreiben kein Problem, wenn du auf der Datenbank/Tablle Schreibrechte hast ...
Was den ODBC-Treiber angeht, habe ich den uralten 3.51 getestet und den aktuellen 5.2 , beides läuft !
Bis dann
Grüße aus Berlin
Reiner
Reiner
Re: ODBC MySQL
Hallo Allerseits,
vielen Dank für euer reges Interesse.
ODBC
- Ich habe die ProVersion 2.0.560 im Einsatz.
- ODBC Connect klappt soweit
- Update eines Feldes bring: Internal data structures corrupted
- Ich nutze aktuellen Treiber: 5.3 ANSI
- Lesen der Datensätze funktioniert.
- Browse() verhält sich nicht korrekt.
vielen Dank für euer reges Interesse.
ODBC
- Ich habe die ProVersion 2.0.560 im Einsatz.
- ODBC Connect klappt soweit
- Update eines Feldes bring: Internal data structures corrupted
- Ich nutze aktuellen Treiber: 5.3 ANSI
- Lesen der Datensätze funktioniert.
- Browse() verhält sich nicht korrekt.
Code: Alles auswählen
m->wsSession := dacSession():new( ;
"dbe=odbcdbe; " + ;
"Driver={" + trim( m->wsDrv ) + "}; " + ;
"Server=" + trim( m->wsSrv ) + "; " + ;
"Port=" + trim( m->wsPrt ) + "; " + ;
"Database=" + trim( m->wsDb ) + "; " + ;
"User=" + trim( m->wsUsr ) + "; " + ;
"Password=" + trim( m->wsPwd ) + "; " ;
)
if m->wsSession:isConnected()
alert( "WebShop erfolgreich verbunden." )
dbusearea( .t. , m->wsSession , "oxuser" )
alert( reccount() )
i := 5
do while .not. eof()
dispoutat( i++ , 0 , OXUSER->OXLNAME )
dbskip()
enddo
// Bis hierhin ist alles gut.
browse()
// verhält sich komisch, wenn man an den Anfang und das Ende geht....
dbgoto( 3 )
OXUSER->OXLNAME := "Testbenutzer" // Datenstrukturen defekt.
dbcommit()
alert( OXUSER->OXLNAME )
dbclosearea()
else
alert( "WebShop nicht verbunden!" )
endif
Re: ODBC MySQL
Es liegt an den eingestellten Zeichensätzen.
Die MySQL Tabellen sind UTF8 - was sonst?
xBase kann ANSI? Welcher wäre das dann in MySQL: latin1-german1?
Die MySQL Tabellen sind UTF8 - was sonst?
xBase kann ANSI? Welcher wäre das dann in MySQL: latin1-german1?
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 98 Mal
- Danksagung erhalten: 13 Mal
Re: ODBC MySQL
Hallo, Ulrich -
es liegt nicht nur an den verwendeten Zeichensätzen.
Hierzu verweise ich auf meinen Artikel in der Wissensbasis: http://www.xbaseforum.de/viewtopic.php?f=16&t=8310
kannst Du über die ODCB-Schnittstelle m.E. schicken.
Das zweite Problem ist ein ganz anderes, hängt aber damit zusammen. Bestimmte Zeichen werden von MySQL als, na, sagen wir mal, "Anweisungen" betrachtet. Wenn Du solchen Zeichen verwendest (wie z.B. den einfachen Anführungsstrich, mit dem ein Text links und rechts begrenzt wird), dann müssen diese Zeichen escape'd werden. MySQL stellt dafür die Funktion rea_escape_string() zur Verfügung.
cWert hat dann den Inhalt
Andernfalls führt das einfache Anführungszeichen nach "Heut" dazu, dass MySQL annimmt, dass der String zu Ende ist und mit "geht" nichts anfangen kann, weil's keine gültige SQL Anweisung ist. Die Reaktion von MySQL fällt in solchen Fällen immer patzig aus: es weigert sich, überhaupt etwas zu tun.
Ob die ODBC-Schnittstelle von Xbase++ 2.0 einen Zugriff auf real_escape_string() erlaubt, kann ich leider nicht sagen.
es liegt nicht nur an den verwendeten Zeichensätzen.
Hierzu verweise ich auf meinen Artikel in der Wissensbasis: http://www.xbaseforum.de/viewtopic.php?f=16&t=8310
Code: Alles auswählen
SET NAMES 'utf8';
Das zweite Problem ist ein ganz anderes, hängt aber damit zusammen. Bestimmte Zeichen werden von MySQL als, na, sagen wir mal, "Anweisungen" betrachtet. Wenn Du solchen Zeichen verwendest (wie z.B. den einfachen Anführungsstrich, mit dem ein Text links und rechts begrenzt wird), dann müssen diese Zeichen escape'd werden. MySQL stellt dafür die Funktion rea_escape_string() zur Verfügung.
Code: Alles auswählen
cWert := "Heut' geht's rund"
cWert := oCon:real_escape_string(cWert)
cUpdate := "UPDATE meineTabelle SET altesFeld = '" + cWert + "'"
Code: Alles auswählen
Heut\' geht\'s rund
Ob die ODBC-Schnittstelle von Xbase++ 2.0 einen Zugriff auf real_escape_string() erlaubt, kann ich leider nicht sagen.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.