kostenloser Webspace werbefrei: lima-city


sql Fehler mit dbxmys.dll

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    animagic

    animagic hat kostenlosen Webspace.

    Hallo Leute,

    ich habe ein Problem mit der dbxmys.dll bei SQL-Abfragen in c++.
    Jedes mal wenn ich in einer SQL-Anweisung mehr als 1 Spalte abfrage (Bsp.: select A_Name, A_Ort from Person;) erscheint folgende Fehlermeldung:

    Zugriffsverletzung bei Adresse 145B8564 in Modul 'dbxmys.dll'. Lesen von Adresse 00000000.

    Geb ich aber in einer Anweisung nur eine Spalte an (Bsp.: select A_Name from Person;), ist alles in Ordnung.

    Habe schon versucht eine neue dbxmys.dll zu laden, aber irgendwie gibt es die nicht im Netz .
    Es gibt auch Gerüchte das es an der SQL-Version liegt.
    Jedenfalls bin ich langsam mit meinem Latein am ende.
    Ich könnte jedes mal immer neue Anfragen schreiben, sprich wenn ich 3 Spalten brauche einfach 3 Anweisungen schreiben,
    aber das verlangsamt das Programm stark. 18 Anweisungen benötigen 28 sek.
    Und dabei benötigte ich, wenn alles funktionieren würde, nur 3 Anweisungen.

    Ich hoffe, ihr könnt mir weiter helfen.

    PS.: ich verwende den c++ Builder 2009 und nutzedie vcl-komponenten.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

  4. Hallo animagic,

    so wie es aussieht entsteht das Problem, weil die dbxmys.dll aus C++Builder 2009 nicht mit neueren MySQL-Konnektoren kompatibel ist.
    Von daher hast Du entweder die Möglichkeit eine alte Version des Konnektors (->libmysql.dll) aufzutreiben, was aber schwierig zu sein scheint insofern ich nicht in der lage war einen zu finden, oder Du versuchst es mit dem MySQL ODBC-Konnektor.
    Für ODBC musst Du wahrscheinlich erst den Konnektor installieren und anschließend unter Systemsteuerung -> Verwaltung -> Datenquellen (ODBC) die Verbindung einrichten. Auf diese kannst Du dann hoffentlich mit dem ODBC-Treiber zugreifen.
  5. Autor dieses Themas

    animagic

    animagic hat kostenlosen Webspace.

    Mein Problem mit der ODBC Schnittstelle ist, das ich mein Programm auch auf anderen Rechnern laufen lassen will, aber nicht bei jedem dieser Rechner eine neue ODBC Schnittstelle in der Systemsteuerung einrichten will und damit allen anderen Rechnern die Zugangsdaten übermitteln müsste.
    Mein Zugang ist hier für lima-city also müsste es ja theoretisch klappen, aber ich komm da echt nicht weiter.

    @ hackyourlife: ja das ist der gleiche Fehler, nur reagiert da keiner und das einzige was diskutiert wurde, ist ob der borland builder ber delphi oder c++ geschrieben wurde und nicht dasd Problem behandelt wurde. Da ich dort auch der letzte war, der etwas geantwortet hat, konnte ich keine neuen Erkenntnisse schreiben und musste damit auf ein neuen thread umsteigen.
  6. Hallo animagic,

    ich habe noch ein wenig gestöbert und folgendes gefunden:

    http://olex.openlogic.com/packages/mysql/4.1.22

    Hier kannst Du Dir eine alte MySQL Version herunterladen. Im bin/ Verzeichnis liegt dann die libmysql.dll damit könnte es evtl. funktionieren.
    Desweiteren habe ich noch die folgenden beiden Links:

    http://wiltonsoftware.com/posts/view/getting-embarcadero-dbexpress-mysql-working-dbx-error-driver-not-initialized

    http://www.djuggler.com/forum/tabid/632/aff/2/aft/220/afv/topic/Default.aspx

    Wenn das alles nichts hilft, dann musst Du auf DBExpress verzichten und direkt mit dem MySQL-Connector arbeiten.
  7. Autor dieses Themas

    animagic

    animagic hat kostenlosen Webspace.

    Hallo darkpandemic,

    du bist ja ein richtiger Schatz, ich habe die 4.1.22 erstmal herunter geladen und schwubs funktionierts ^^.
    Muss ich jetzt darauf achten welche libmysql ich benutze? mir geht es darum, welche Abfragezeiten ich habe.
    In nächster Zeit werde ich mein Programm nochmal neu schreiben müssen, da ich jetzt auch mehrere Spalten abfragen kann und hoffe damit auch schnellere Ladezeiten zu erziehlen.

    Aber in allem und ganzen Danke ich dir von ganzem Herzen !!!!!
  8. Hallo animagic,

    ja, Du hast recht, dass Du darauf achten musst, welche libmysql.dll Du verwendest. Offiziel sollte die dbxmys.dll zwar mit 4.1*, 5.0.27 und 5.1 kompatibel sein, aber das ist offensichtlich nicht richtig.
    Nachdem Du jetzt eine Dll hast, mit der es funktioniert solltest Du auch bei der bleiben. Wenn Du Dein Programm auf einem anderen Rechner ausführen willst, dann solltest Du immer diese Dll mitnehmen und im selben Ordner wie die Exe haben, damit Du kein Problem bekommst, falls eine neuere Version bereits auf dem Zielsystem ist.
    Um gute Abfragezeiten zu erzielen ist es in erster Linie wichtig die Datenbank gut zu Strukturieren, d.h. nach Möglichkeit ganzzahlige Primärschlüssel verwenden, Felder nach dennen häufig gefiltert wird bzw. welche für Joins verwendet werden indizieren, statische Abfragen als Views hinterlegen usw.
    Da Du über ein Netzwerk/Internet auf die Datenbank zugreifst solltest Du insbesondere darauf achten, dass die Ergebnisdatenmengen möglichst klein sind. D.h. man sollte nicht mehrere Tabellen separat Abfragen und sie dann erst im Programm per C++ filtern, vereinigen oder anderweitig verarbeiten sondern alles was sich per SQL auf dem Server machen/berechnen lässt voll ausschöpfen und erst dann die Ergebnisse übertragen.
    Sollte es dann immer noch Probleme mit der User-Experience geben, dann bleibt einem noch die Abfragen erst bei Bedarf auszuführen anstatt alles auf einmal zu laden und die Abfragen mit Hilfe von Background-Threads durchzuführen damit die Programmoberfläche nicht "hängt". Nachdem ich Deine IDE jetzt nicht kenne kann ich aber nicht sagen, ob sich letzteres in Deinem Kontext so einfach machen lässt.
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!