
Firedac是Delphi开发跨平台的数据库应用程序的通用数据访问组件,同样适用于C++ Builder和FreePascal。这里是Firedac操作Sqlite的学习笔记。文中代码在Delphi 11中编译通过。
先将“FireDAC 和 Sqlite 一:基本控件和设置”一篇中提到的常用控件加入Form,并做好关联。
SQLite支持5种数据类型: Null,Integer,Real,Text,Blob。虽然SQLite只支持这5种类型,但由于FireDAC做了自动映射,所以Delphi的大多数类型都是可以使用的。
Null:值是Null
Integer:有符号整型,根据值的大小以1,2,3,4,6或8字节存放。
Real:浮点型,以8字节IEEE浮点数存放。
Text:文本字符串,使用数据库编码(UTF-8,UTF-16BE或者UTF-16LE)存放
Blob:二进制数据,完全按照输入存放。
procedure TForm1.Button1Click(Sender: TObject);
const
dbPath:string = 'D:\SQLite\FireDAC.db';
begin
FDQuery1.Connection := FDConnection1;
DataSource1.DataSet := FDQuery1;
DBGrid1.DataSource := DataSource1;
FDCommand1.Connection := FDConnection1;
if FileExists(dbPath) then
begin
DeleteFile(dbPath); //如果已经存在先删除
end;
//创建数据库
FDConnection1.Params.Add('DriverID=SQLite');
FDConnection1.Params.Add('Database='+dbPath); //如果文件存在就打开, 不存在就建立
//FDConnection1.Params.Add('SQLiteAdvanced=temp_store=Memory'); //临时文件位置. DEFAULT,FILE,MEMORY
//FDConnection1.Params.Add('SQLiteAdvanced=temp_store_directory=D:\SQLite\'); //临时文件路径
//FDConnection1.Params.Add('OpenMode=CreateUTF8'); //默认UTF8, 也可选择 CreateUTF16
//FDConnection1.Params.Add('LockingMode=Normal'); //默认是多用户模式Normal, 独占模式 LockingMod=Exclusive
FDConnection1.Connected := True;
//先创建一个名为 MyTable 的表, 字段包括: ID, Name, Age, Note, Picture
FDCommand1.CommandText.Clear;
with FDCommand1.CommandText do begin
Add('CREATE TABLE MyTable(');
Add('ID integer PRIMARY KEY,'); //Integer 类型, 同时设为主键
Add('Name String(10),'); //同Add('Name Text(10),');能容下 10 个字符的 String 类型
Add('Age Byte,'); //同Add('Age Integer,'); Byte 类型
Add('Note Text,'); //因为没有定义长度,在DBGrid里会显示(WideMemo) ,而不显示实际内容
Add('Picture Blob'); //Blob(二进制)类型
Add(')');
end;
//再创建一个名为 MyTable2 的表, 字段包括: ID, Name, Age, Note, Picture
FDConnection1.ExecSQL('CREATE TABLE MyTable2(ID integer PRIMARY KEY, Name string(10), Age byte, Note text, Picture blob)');
FDCommand1.Active := True;//执行
FDQuery1.Open('SELECT * FROM MyTable'); //打开表格
showmessage(dbPath+' 创建完成!');
end;

