欢迎光临!
若无相欠,怎会相见

Delphi-创建SQLite数据库

序言

之前因为电脑存的东西太多了,特别是一些PDF电子书,有很多是重复的,占用我的磁盘空间,因此有了一个想法,编写一个小应用,把文件创建日期,文件名,文件的MD5 hash值,文件的路径等存入到SQLite数据库中,然后之后再添加文件的时候,校验文件MD5来判断是否是重复的,以此进行筛选是否是重复的。这个软件我打算使用Delphi进行编写,之前有想过学习VB,因为Excel中有VBA,不过经过考虑,还是直接使用Delphi了,Delphi可以编写Android应用,后面也可以给自己开发小的Android应用。本次使用的Delphi是Delphi XE6,包含了FireDAC组件,可以很方便的使用SQLite数据库。

创建数据库

创建SQLite数据库的时候,可以选择在内存中创建,也可以在磁盘中创建数据库。在磁盘中创建数据库后,应用关闭后,数据是保存到数据库中的,在内存中创建数据库,应用结束后数据就没了,除非将那块内存dump保存到磁盘中。因此按照我的想法,我是在磁盘中创建数据库。

首先,创建一个VCL Form Application,在这个Form中添加TFDConnection、TFDQuery、TDataSource、TDBGrid组件,TFDConnection用于创建数据库连接,TFDQuery、TDataSource、TDBGrid用来呈现数据。另外还有添加上TFDPhysSQLiteDriverLink和TFDGUIxWaitCursor两个组件,不然容易报错。

代码如下:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, FireDAC.Stan.Intf, FireDAC.Stan.Option,
  FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
  FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Stan.Param,
  FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt, Vcl.Grids, Vcl.DBGrids,
  Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client, FireDAC.Stan.ExprFuncs,
  FireDAC.Phys.SQLite, FireDAC.VCLUI.Wait, FireDAC.Comp.UI;

type
  TForm1 = class(TForm)
    FDConnection_1: TFDConnection;
    FDQuery_1: TFDQuery;
    DataSource_1: TDataSource;
    DBGrid_1: TDBGrid;
    FDPhysSQLiteDriverLink_1: TFDPhysSQLiteDriverLink;
    FDGUIxWaitCursor_1: TFDGUIxWaitCursor;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
const
  dbPath = 'data.db';
var
  sql : string;
begin
  { 数据库连接类型 }
  FDConnection_1.DriverName := 'SQLite';
  FDConnection_1.Params.Add('DriverID=SQLite');

  { 当数据库文件不存在时,创建这个文件 }
  if not FileExists(dbPath) then
  begin
    FDConnection_1.Params.Add('Database=' + dbPath);
    FDConnection_1.Connected := True;
    sql := 'CREATE TABLE Files(ID integer PRIMARY KEY, Name string(100), MD5 string(32), DirectoryPath text)';
    FDConnection_1.ExecSQL(sql);    { 执行SQL语句 }
  end
  { 当数据库文件存在时,直接进行连接 }
  else
  begin
    FDConnection_1.Params.Add('Database=' + dbPath);
    FDConnection_1.Connected := True;
  end;

  FDQuery_1.Open('Select * from Files');
  FDQuery_1.Connection := FDConnection_1;
  DataSource_1.DataSet := FDQuery_1;
  { 展示数据 }
  DBGrid_1.DataSource := DataSource_1;
end;

end.

代码编译后运行结果如下:

结语

今天就到此结束了,电脑显示器突然出现亿条横线,我得看看什么情况,感谢阅读。

如有错误,敬请指出,感谢指正! —2020-05-30  22:21:14

 

赞(1) 打赏
转载请注明:飘零博客 » Delphi-创建SQLite数据库
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

欢迎光临