[Delphi] SQLite + dbExpress 'Invalid option'

0

Używam sterownika DbExpress do SQLite z tej strony: http://www.bcp-software.nl/artikelen/sqlite.html
Mam taki kodzik:

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  SqlExpr;

var
  SQLConnection: TSQLConnection;
  SQLDataSet: TSQLDataSet;
begin
  try
    DeleteFile('database.db');
    SQLConnection := TSQLConnection.Create(nil);
    with SQLConnection do
    begin
      DriverName := 'SQLite';
      LibraryName := 'DbxSQLite3.dll';
      GetDriverFunc := 'getSQLDriverSQLite3';
      VendorLib := 'sqlite3.dll';
      Params.Add('Database=database.db');
      Params.Add('RoleName=Cache=2000|TextLength=1024|CanCreateDb=True');
      LoginPrompt := False;
      Connected := True; //pierwszy wyjątek  <-------------------------------------------------------------------
    end;
    if not SQLConnection.Connected then
    begin
      WriteLn('nie udalo sie nawiazac polaczenia z baza danych');
      Exit;
    end;
    SQLConnection.ExecuteDirect(
      'CREATE TABLE tabela(indeks INTEGER);'  +
      'INSERT INTO tabela(indeks) VALUES(1);' +
      'INSERT INTO tabela(indeks) VALUES(2);' +
      'INSERT INTO tabela(indeks) VALUES(3);'
    );
    SQLDataSet := TSQLDataSet.Create(nil);
    SQLDataSet.SQLConnection := SQLConnection;
    SQLDataSet.CommandText := 'SELECT * FROM tabela';
    SQLDataSet.Active := True; //kolejne wyjątki  <-------------------------------------------------------------------
    if not SQLDataSet.Active then
    begin
      WriteLn('nie udalo sie aktywować SQLDataSet');
      Exit;
    end;

  except
    on E: Exception do
      WriteLn(E.ClassName + ': "' + E.Message + '"');
    else
      WriteLn('zlapalem inny wyjatek');
  end;

  if SQLDataSet <> nil then SQLDataSet.Free;
  if SQLConnection <> nil then SQLConnection.Free;
  Write('KONIEC'); ReadLn;
end.

Wyjście:EDatabaseError: "dbExpressError: Unknown Error Code: '65535'code>Wyjście:`EDatabaseError: "dbExpressError: Unknown Error Code: '65535'"
KONIEC


Tworzę nowe połączenie TSQLConnection z bazą SQLite. Podczas łączenia z bazą ("Connected := True;") debugger pokazuje rzucany gdzieś w DLL wyjątek:`EDbxInvalidCall 'Invalid option request in TSQLLiteDriver'`który jest gdzieś wyłapywany i program idzie dalej. Połączenie jest nawiązane i można wysyłać zapytania.

Tworzę nowy TSQLDataSet i podpinam pod połączenie z bazą. Podczas aktywowania ("Active := True;") debugger pokazuje po kolei rzucane gdzieś w DLL wyjątki:

EDbxInvalidCall 'Invalid option passed to TSQLiteConnection.SetOption: 26'
EDatabaseError 'dbExpressError: Unknown Error Code: '256''
EDatabaseError 'dbExpressError: Unknown Error Code: '65535''

Wszystkie są gdzieś wyłapywane w DLL, oprócz tego ostatniego, ostatni przechwytuję ja.

Obydwie DLL'ki pochodzą z jednej paczki pobranej z wymienionej strony i leżą w katalogu programu. Problem jest ten sam na D8 i D10 Turbo, XP i Vista.

Szukałem bezskutecznie innego darmowego sterownika do SQLite i dbExpress. Znacie coś ?
0

Czy te same objawy są, gdy tworzysz dając jako parenta Application? Miałem kiedyś problem z kontrolkami do Postgresa, gdy tworzyłem je dynamicznie dając nullowego parenta.

0

Próbowałem z parentem (formą), kładłem też komponenty na formę i to samo...

0

Mógłby mi ktoś podesłać działający projekt ? Chciałbym, aby były w nim:

  • komponenty, ułożone na formie i spięte relacjami: SQLConnection, SQLDataSet + mile widziana SQLTable wyświetlająca zawartość przykładowej tabeli
  • dll'ki: do samego SQLite oraz sterownik dbExpress do SQLite

Mój mail:
adf88 małpa interia kropka pl

Byłbym bardzo wdzięczny za projekcik wraz ze skompilowaną binarką.

0

A niby jak ten projekt ma działać, skoro autorzy spier[--]lili dokumentację, dołączyli nieaktualną bibliotekę sqlite3.dll a z tą, którą dołączyli ich własne demo nie chce działać?

Jeśli z SQLite nie trzeba nic robić, wystarczy wrzucenie dll-ki do folderu - to te ichnie patenty na połączenie nie działają.

0

OK. Chcę aby w gridzie wyświetlił się wynik zapytania do bazy SQLite. Co polecacie ?
Próbowałem kilka bibliotek z Torry's Delphi Page, jednak bezskutecznie, same nieudokumentowane, podziurawione starocie nierozwijane od X lat.

0

http://www.aducom.com/sqlite/download.htm

SQLite to nie moja bajka, a czasu mam niewiele, więc nie testowałem za dokładnie. Na stronie jest napisane, że komponenty są aż do wersji D2005, te które ściągnąłem - wymagały przeróbek gdyż były dla wersji D5. Przeróbki minimalne, aplikacja testowa poszła. Działa grid, master-detail etc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1