Delphi: SQLite and UniDac

4.7k views Asked by At

Need to store some data in SQLite. To work with SQLite chose UniDac, but there is a problem: when in the UniConnection, in the field "Database", I choose SQLite and enter the name of the database - get the error "Unsupported metadata kind". Database file is not created. What is the problem? As previously worked with UniDac, then such problems are not observed.

1

There are 1 answers

0
Anthony Eischens On BEST ANSWER

UniDAC 4.1.6 with Delphi XE2 I'm not seeing any issues. SQLite3.dll must be in the system path or the same directory as your executable. Very basic example below creates the data file when btnConnect is clicked.

unit uMain;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.DBGrids, UniProvider,
  SQLiteUniProvider, Data.DB, MemDS, DBAccess, Uni, Vcl.ExtCtrls, Vcl.DBCtrls,
  Vcl.StdCtrls;

type
  TfrmMain = class(TForm)
    UniDataSource1: TUniDataSource;
    UniConnection1: TUniConnection;
    UniQuery1: TUniQuery;
    SQLiteUniProvider1: TSQLiteUniProvider;
    DBGrid1: TDBGrid;
    edtDBName: TEdit;
    Label1: TLabel;
    DBNavigator1: TDBNavigator;
    btnConnect: TButton;
    procedure btnConnectClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.btnConnectClick(Sender: TObject);
begin
  if (btnConnect.Caption = 'Connect') then
  begin
    UniConnection1.ProviderName := 'SQLite';
    UniConnection1.Database := ExtractFilePath(Application.ExeName)
     + edtDBName.Text;
    UniConnection1.Connect;
    btnConnect.Caption := 'Disconnect';
  end
  else
  begin
    UniConnection1.Disconnect;
    btnConnect.Caption := 'Connect';
  end;
end;