2012-05-25 95 views
2

需要在SQLite中存儲一些數據。要使用SQLite選擇UniDac,但存在一個問題:在UniConnection中,在「數據庫」字段中,我選擇SQLite並輸入數據庫的名稱 - 獲取錯誤「不支持的元數據類型」。數據庫文件沒有被創建。問題是什麼?如之前與UniDac一起工作,則不會觀察到這些問題。德爾福:SQLite和UniDac

+0

萬一它可能會讓你感興趣,我已經在sqlite3.dll的周圍創建了一個薄包裝器https://github.com/stijnsanders/TSQLite –

回答

2

UniDAC 4.1.6與德爾福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;