![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: myODBC
Delphi, ADO, MySQL und ein ganz böser Parameterfehler...
Hallo Allerseits !
Ich habe (mit Delphi 5 SP1) ein Programm geschrieben, dass mittels ADO/ODBC auf eine MySQL-Datenbank zugreift. Im Programm selbst benutze ich dazu u.a. ADOCommands, deren SQL-Anweisungen mittels Parameter Daten zugewiesen werden. Dies funktioniert auch wunderbar, so lange entweder eine (alte) MDAC 2.80 oder eine (alte) MyODBC 3.51.14 oder noch älter installiert sind. :coder2: Wenn sowohl MDAC in der Version 2.81.1117.0 (Teil des XP SP2) als auch MyODBC in der Version 3.51.15 / 3.51.16 vorhanden sind, erhalte ich folgende Fehlermeldung : "Ein Parameterobjekt ist nicht ordnungsgemäß definiert. Inkonsistente oder unvollständige Informationen wurden übergeben." Wenn ich die SQL-Anweisung manuell zusammenbastel und keine Parameter verwende, funktioniert es; jedoch kann das keine Lösung sein, da ich sehr häufig Parameter in diesem Programm verwende. Es kann im übrigen auch nicht daran liegen, dass NULL-Werte unbekannten Typs sind, da auch Aufrufe abstürzen, die definitiv keinen NULL-Wert enthalten. Tritt dieses Problem auch mit Delphi 7 oder neuer auf ? Irgendwelche Ideen, wie ich das ganze korrigieren kann, ohne alle Parameter herauszunehmen oder alte Treiber vorauszusetzen ??? :gruebel: (Ich kann einem Kunden ja wohl schlecht erzählen, er solle sich nur alte Treiber installieren...) Gruß Guido |
Re: Delphi, ADO, MySQL und ein ganz böser Parameterfehler...
Wie sieht die Abfrage aus?
|
Re: Delphi, ADO, MySQL und ein ganz böser Parameterfehler...
Z.B. so :
SQL-Code:
Parameterübergabe mit :
insert into products_description(
products_id, language_id, products_name, products_description, products_viewed ) values ( :products_id, :language_id, :products_name, :products_description, :products_viewed) ON DUPLICATE KEY UPDATE products_name=:name1, products_description=:description1
Delphi-Quellcode:
{...}
ADOCmd.Parameters.ParamByName('products_id').Value := ID; {...} |
Re: Delphi, ADO, MySQL und ein ganz böser Parameterfehler...
Zitat:
Zitat:
![]() Anwendung -> ADO-Express/dbGO -> ADO -> OLE DB für ODBC -> ODBC -> MyODBC -> MySQL-Server mit MyDAC verkürzst du diese potentielle Fehlerquelle auf Anwendung -> MyDAC -> MySQL-Server Aber zu deinem Problem: Nutzt du evtl. TADOTable/TADOQuery? Bei Verwendung von TADODataSet sind weniger Fehler zu erwarten (falls der Fehler doch in der ADOExpress/dbGo-Implementierung liegen sollte). |
Re: Delphi, ADO, MySQL und ein ganz böser Parameterfehler...
Man muss darauf achten, dass [TParameter].DataType auf den korrekten Datentyp eingestellt ist.
Bei einer Änderung an der SQL Anweisung versucht die VCL, über den Treiber den korrekten Datentyp zu ermitteln. Dies kann in vielen Fällen schiefgehen (z.B. bei komplexen Abfragen oder nicht-standard SQL wie in deinem Fall) und dann muss man von Hand eingreifen. Wenn es ein String-Datentyp ist, muss auch [TParameter].Size korrekt eingestellt werden. |
Re: Delphi, ADO, MySQL und ein ganz böser Parameterfehler...
@ B.Geyer
Zitat:
Zitat:
|
Re: Delphi, ADO, MySQL und ein ganz böser Parameterfehler...
Ado als Bridge-Pattern-Ersatz kannst du vergessen. ODBC erst recht.
Welceh DBMS sollen zusätzlich unterstützt werden? |
Re: Delphi, ADO, MySQL und ein ganz böser Parameterfehler...
Zitat:
|
Re: Delphi, ADO, MySQL und ein ganz böser Parameterfehler...
@shmia
Ich habe mal probiert allen Parametern den Typ zuzuweisen
Delphi-Quellcode:
Das hat nicht ausgereicht - Die zus. Zuweisung der Stringgrößen probiere ich gleich mal aus.
{...}
ADOCmd.Parameters.ParamByName('products_id').DataType := ftInteger; {...} Seltsam ist das das bislang alles wunderbar funktioniert hat und nur die Kombination aus aktuellen ADOs und aktueller MyODBC zu problemen führt... |
Re: Delphi, ADO, MySQL und ein ganz böser Parameterfehler...
Zitat:
Wie bereits gesagt - bislang hatten wir keine Probleme damit - erst die Kombi aus neuen Treibern führte zu der Meldung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz