建立數據庫的代碼:
{建立內存數據庫的一般代碼:} begin FDConnection1.DriverName := 'SQLite'; //同 FDConnection1.Params.Add('DriverID=SQLite'); // FDConnection1.Params.Add('Database=:memory:'); //可省略這行, FireDAC 的源碼顯示, if Database = '' then Database := ':memory:'; // FDConnection1.Params.Add('SQLiteAdvanced=page_size=4096'); //可指定內存頁大小, 這是默認值 FDConnection1.Connected := True; end {建立文件數據庫的一般代碼:} begin FDConnection1.Params.Add('DriverID=SQLite'); FDConnection1.Params.Add('Database=C:\Temp\New1.sdb'); //如果文件存在就打開, 不存在就建立 // FDConnection1.Params.Add('SQLiteAdvanced=temp_store=Memory'); //可強制臨時文件在內存以提高效率. 0:DEFAULT; 1:FILE; 2:MEMORY // FDConnection1.Params.Add('SQLiteAdvanced=temp_store_directory=C:\Temp'); //默認的臨時文件路徑應該是 C:\Documents and Settings\user-name\Local Settings\Temp\ // FDConnection1.Params.Add('OpenMode=CreateUTF8'); //默認是 CreateUTF8, 也可選擇 CreateUTF16 // FDConnection1.Params.Add('LockingMode=Normal'); //默認是多用戶模式, 如果使用獨占模式 LockingMod=Exclusive 會更有效率 FDConnection1.Connected := True; end;
FDQuery1 . Connection = FDConnection1 DataSource1 . DataSet = FDQuery1 DBGrid1 . DataSource = DataSource1 FDCommand1 . Connection = FDConnection1
procedure TForm1.FormCreate(Sender: TObject); const dbPath = 'C:\Temp\SQLiteTest.sdb'; begin if FileExists(dbPath) then DeleteFile(dbPath); with FDConnection1 do begin Params.Add('DriverID=SQLite'); Params.Add('Database=' + dbPath); Connected := True; end; {創建一個名為 MyTable 的表, 字段包括: ID, Name, Age, Note, Picture} with FDCommand1.CommandText do begin Add('CREATE TABLE MyTable('); Add('ID integer PRIMARY KEY,'); //Integer 類型, 同時設為主鍵 Add('Name string(10),'); //能容下 10 個字符的 String 類型 Add('Age byte,'); //Byte 類型 Add('Note text,'); //Memo 類型 Add('Picture blob'); //Blob(二進制)類型 Add(')'); end; FDCommand1.Active := True; {查看表} FDQuery1.Open('SELECT * FROM MyTable'); //TFDQuery 適於 DML(數據庫操作), 所以上面的 DDL(數據庫定義) 使用的是 TFDCommand. end;
procedure TForm1.FormCreate(Sender: TObject); const dbPath = 'C:\Temp\SQLiteTest.sdb'; begin if FileExists(dbPath) then DeleteFile(dbPath); with FDConnection1 do begin Params.Add('DriverID=SQLite'); Params.Add('Database=' + dbPath); Connected := True; end; {創建一個名為 MyTable 的表, 字段包括: ID, Name, Age, Note, Picture} FDConnection1.ExecSQL('CREATE TABLE MyTable(ID integer PRIMARY KEY, Name string(10), Age byte, Note text, Picture blob)'); {查看表} FDQuery1.Open('SELECT * FROM MyTable'); end;
uses FireDAC.Phys.SQLiteWrapper; //為使用 TSQLiteStatement {使用 TSQLiteStatement 完成的提交 SQL 命令的函數} procedure MyExecSQL(ACon: TFDConnection; const ASQL: String); begin with TSQLiteStatement.Create(ACon.CliObj) do try Prepare(ASQL); Execute; while PrepareNextCommand do Execute; finally Free; end; end; procedure TForm1.FormCreate(Sender: TObject); const dbPath = 'C:\Temp\SQLiteTest.sdb'; begin if FileExists(dbPath) then DeleteFile(dbPath); with FDConnection1 do begin Params.Add('DriverID=SQLite'); Params.Add('Database=' + dbPath); Connected := True; end; {創建一個名為 MyTable 的表, 字段包括: ID, Name, Age, Note, Picture} MyExecSQL(FDConnection1, 'CREATE TABLE MyTable(ID integer PRIMARY KEY, Name string(10), Age byte, Note text, Picture blob)'); {查看表} FDQuery1.Open('SELECT * FROM MyTable'); end;