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;