序言
之前因为电脑存的东西太多了,特别是一些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
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了