Delphi FireDAC 下的 Sqlite(四) 创建数据库2015-02-13建立数据库的代码:
{建立内存数据库的一般代码:}beginFDConnection1.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{建立文件数据库的一般代码:}beginFDConnection1.Params.Add("DriverID=SQLite");FDConnection1.Params.Add("Database=C:TempNew1.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 Settingsuser-nameLocal SettingsTemp
// FDConnection1.Params.Add("OpenMode=CreateUTF8"); //默认是 CreateUTF8, 也可选择 CreateUTF16// FDConnection1.Params.Add("LockingMode=Normal"); //默认是多用户模式, 如果使用独占模式 LockingMod=Exclusive 会更有效率FDConnection1.Connected := True;end;
所有建立参数参见: 先在空白窗体上添加: TFDConnection、TFDPhysSQLiteDriverLink、TFDGUIxWaitCursor; 数据库的建立主要通过 TFDConnection 完成.同时添加用于呈现数据的 TFDQuery、TDataSource、TDBGrid, 还要添加一个 TFDCommand 用于提交建表命令, 然后调整如下属性:
FDQuery1. Connection = FDConnection1DataSource1 . DataSet= FDQuery1DBGrid1 . DataSource = DataSource1FDCommand1. Connection = FDConnection1
你可以复制下面文本框中的内容, 然后直接往窗体上贴, 以快速完成以上的添加过程:
测试代码:
procedure TForm1.FormCreate(Sender: TObject);constdbPath = "C:TempSQLiteTest.sdb";beginif FileExists(dbPath) then DeleteFile(dbPath);with FDConnection1 dobeginParams.Add("DriverID=SQLite");Params.Add("Database=" + dbPath);Connected := True;end;{创建一个名为 MyTable 的表, 字段包括: ID, Name, Age, Note, Picture}with FDCommand1.CommandText dobeginAdd("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");end;
效果图:

直接使用 TFDConnection 提交 DDL 命令更简单:
procedure TForm1.FormCreate(Sender: TObject);constdbPath = "C:TempSQLiteTest.sdb";beginif FileExists(dbPath) then DeleteFile(dbPath);with FDConnection1 dobeginParams.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;