FireDAC 和 Sqlite 二:创建数据库和表

0051.jpg


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;


标签:DelphiFireDAC

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://evelee.net/blog/?id=68