2012-05-25 7 views
2

Необходимо хранить некоторые данные в SQLite. Для работы с SQLite выбрал UniDac, но есть проблема: когда в UniConnection в поле «База данных» я выбираю SQLite и вводим имя базы данных, получите ошибку «Неподдерживаемый вид метаданных». Файл базы данных не создается. В чем проблема? Как ранее работали с UniDac, тогда такие проблемы не наблюдаются.Delphi: SQLite и UniDac

+0

В случае, если это вас заинтересует, я создал тонкую обертку вокруг sqlite3.dll здесь https://github.com/stijnsanders/TSQLite –

ответ

2

UniDAC 4.1.6 с Delphi XE2 У меня нет проблем. SQLite3.dll должен находиться в системном пути или в том же каталоге, что и ваш исполняемый файл. Очень простой пример ниже создает файл данных при щелчке по btnConnect.

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; 
Смежные вопросы