Mariadb e adoconnection errore impostando una select parametri

di il
5 risposte

Mariadb e adoconnection errore impostando una select parametri

Buongiorno a tutti, ho un problema che davvero non riesco a capire.
Ho installato mariadb versione 10.5.6
lmariadb-connector-odbc- 3.1.9
ho aggiunto l ODBC relativo in windows.
tramide HEIDISQL creo un nuovo database DBPROVA a cui aggiungo una tabella NOMI con due campi ID autoincrement chiave e NOME varchar

progetto nuovo, inserisco un adoconnection e gli assegno la stringa di connessione mediante la procedura guidata e risulta essere qualcosa del tipo:

'DSN=MyMariaDBODBC;DRIVER={MariaDB ODBC 3.1 Driver};TCPIP=1;SERVER=127.0.0.1;UID=root;PWD=mypassword;DATABASE=NOMI';

testo la connessione ed e'tutto ok.
delphi versione 10.1

piazzo un bottone al cui codice ci assegno:
ADOConnection1.Connected:=true;
with TADOQuery.Create(self) do
try
Connection:= ADOConnection1 ;
sql.Add('select * from nomi where id>:pid');
Parameters.ParamByName('pid').Value:=20000;
open;
ShowMessage(inttostr(RecordCount)) ;
finally
free;
end;

non mi sembra una cosa particolarmente complessa
bene.. quando arriva alla istruzione sql.Add('select * from nomi where id>:pid'); mi restituisce il seguente errore:
"project1.exe raised exception class eole exception with message "gli argomenti non sono di tipo valido, non sono compresi nell intervallo consentito
o sono in conflitto"

no ne riesco ad uscire.. la cosa buffa e'che ho fatto la stessa identica cosa su un altro computer e funziona, l unica differenza e'che su quest altro pc delphi e'la10.4 ... le versioni di mariadb, odbc e anche heidi sono le stesse... stessi file di installazioni, stessa procedura di installazione e settaggi..

ce da dire che in debug mi da quell errore ma poi lo showmessage me lo mostra lo stesso, quindi genera un errore ma continua... pero'al di la che non capisco il motivo a me serve usare la procedura da un altra parte su un altro progetto in cui le eccezzioni vengono trattae e quindi salterebbe un altra parte di codice...

se qualcuno ha qualche idea o suggerimento ne sarei grato.

5 Risposte

  • Re: Mariadb e adoconnection errore impostando una select parametri

    Potrebbero esserci magari differenze nella versione delle librerie ADO (OLE DB) di Microsoft, di cui i componenti dbGo for ADO presenti in Delphi sono un "wrapper" (dietro le quinte, utilizzano quello strato software per implementare la connessione al database).

    Verifica che su entrambe le macchine sia installata la stessa versione (possibilimente aggiornata) dei componenti MDAC (Microsoft Data Access Components), ad esempio scaricandoli da questa pagina).

    Ciao!
  • Re: Mariadb e adoconnection errore impostando una select parametri

    Ti ringrazio del suggerimento.
    ho fatto come hai detto ma purtroppo non cambia nulla, installato gli mdac su entrambi i pc e da lo stesso comportamento di prima, dove gia' non dava errore continua a non darlo e dove lo dava continua a darlo.
  • Re: Mariadb e adoconnection errore impostando una select parametri

    Prova ad abilitare i debug DCUs (vedi le istruzioni qui) che magari possono indicarti qual è il punto esatto del codice sorgente (quello Delphi dei componenti ADO) in cui si verifica l'errore: da quello forse si potrebbe risalire all'origine del problema.

    In alternativa, perché non provare ad accedere al database usando la libreria FireDAC?
    Sicuramente è più performante della combinazione ADO->driver OLE DB->ODBC.

    Stando a quando indicato in questo blog post, data la compatibilità con MySQL, dovrebbe essere sufficiente usare questo driver per accedere.

    La piattaforma ADO (OLE DB) è da considerare "in dismissione", nonostante venga ancora attivamente installata e supportata (sebbene non evoluta).

    Ciao!
  • Re: Mariadb e adoconnection errore impostando una select parametri

    Per ora ho 'aggirato' il problema spostando la cattura dell eccezione e funziona.

    Mi piacerebbe usare FireDac in effetti, il problema é che il progetto su cui devo lavorare é bello vecchiotto e ha in giro un po ovunque su vari data module e non so quante form in cui vengono usati i componenti ado, era per non stare a cambiarli tutti.
    Ora usa database access e si voleva passare appunto a mariadb o mysql... e dovrebbe comunque continuare a funzionare anche con access.
  • Re: Mariadb e adoconnection errore impostando una select parametri

    yarendil ha scritto:


    Per ora ho 'aggirato' il problema spostando la cattura dell eccezione e funziona.
    Un po' brutale, ma se tutto il resto funziona, che dire...

    yarendil ha scritto:


    Mi piacerebbe usare FireDac in effetti, il problema é che il progetto su cui devo lavorare é bello vecchiotto e ha in giro un po ovunque su vari data module e non so quante form in cui vengono usati i componenti ado, era per non stare a cambiarli tutti.
    Non è una missione impossibile, ma concordo sul fatto che debba essere fatta con una certa cura verificando di volta in volta il corretto funzionamento del tutto, quindi capisco.

    yarendil ha scritto:


    Ora usa database access e si voleva passare appunto a mariadb o mysql... e dovrebbe comunque continuare a funzionare anche con access.
    Questo lo vedo un po' più difficile, o meglio dipende da come le operazioni vengono eseguite.

    Ricorda che Access è un database file-based, mentre MySQL è un sistema client/server: a seconda di come vengono effettuate le interrogazioni, è possibile che il tutto risulti inefficiente con l'uno o con l'altro DB, per via della loro diversità nel principio di funzionamento.

    Io valuterei il passaggio ad altri componenti e, come minimo, imporrei (se si può) di adottare MySQL/MariaDB o in alternativa SQL Server al posto di Access, così almeno si utilizzano sistemi più simili tra loro.

    Ciao!
Devi accedere o registrarti per scrivere nel forum
5 risposte