目录
1 简介
2 需要的窗体控件很简单
3 定义字段并插入几条记录
4 其他操作
4.1 数据集保存为csv文件
4.2 清空数据
4.3 加载csv文件
5 运行程序
6 导出文件
1 简介
在某些数据操作需求特别简单的情况下,我们希望不要安装任何数据库,甚至连一个驱动dll都不要,因为这些驱动dll可能涉及到版本甚至跨平台问题。这种简单需求,可以直接使用csv文件作为数据集来进行增查删改操作。注意,这不是用某些数据库映射csv文件作为数据库的一个表。
这种直接操作csv文件数据集好处不少,比如不用安装任何驱动,支持跨平台,可以直接使用文本编辑器修改文件,体积极小容易发布等。当然Lazarus还有其他可用的类似方式,比如直接操作电子表格文件、dbf文件等,都不需要安装驱动,都可以实现增查删改功能。
这里简单介绍把csv映射为数据集以及相关的简单操作。
2 需要的窗体控件很简单
核心控件就是这个 CSVDataset,位于控件集的Data Access页签中。
3 定义字段并插入几条记录
在FormCreate事件中,检查是否存在指定名称的csv文件,如果存在就直接加载。如果不存在,则定义字段信息,然后用代码插入几条记录:
procedure TForm1.FormCreate(Sender: TObject);
begin
CSVDataset1.FileName := Application.Location + FILENAME;
CSVDataset1.CSVOptions.FirstLineAsFieldNames := true;
// 程序首次运行,数据文件不存在.
// 必须创建字段信息.建立数据集。
if not FileExists(CSVDataset1.FileName) then begin
with CSVDataset1 do begin
FieldDefs.Add('FirstName', ftString, 20);
FieldDefs.Add('LastName', ftstring, 20);
FieldDefs.Add('City', ftString, 20);
FieldDefs.Add('Address', ftString, 30);
FieldDefs.Add('Birthdate', ftDate);
CreateDataset;
// 打开数据集...
Open;
// ... 增加数据:
Append;
FieldByName('FirstName').AsString := 'Walter';
FieldByName('LastName').AsString := 'Mellon';
FieldByName('City').AsString := 'Oklahoma City';
FieldByName('Address').AsString := '1261, Main Street';
FieldbyName('Birthdate').AsDateTime := EncodeDate(1980, 1, 1);
Post;
Append;
FieldByName('FirstName').AsString := 'Mario';
FieldByName('LastName').AsString := 'Speedwagon';
FieldByName('City').AsString := 'Hollywood';
FieldByName('Address').AsString := '1500, Hollywood Blvd';
FieldbyName('Birthdate').AsDateTime := EncodeDate(1982, 12, 17);
Post;
Append;
FieldByName('FirstName').AsString := 'Anna';
FieldByName('LastName').AsString := 'Mull';
FieldByName('City').AsString := 'Los Angeles';
FieldByName('Address').AsString := '2202, Capitol Square';
FieldbyName('Birthdate').AsDateTime := EncodeDate(1982, 12, 17);
Post;
end;
end;
CSVDataset1.Open;
end;
4 其他操作
4.1 数据集保存为csv文件
procedure TForm1.Button1Click(Sender: TObject);
begin
CSVDataset1.SaveToCSVFile('exported.csv');
end;
4.2 清空数据
procedure TForm1.Button2Click(Sender: TObject);
begin
CSVDataset1.Clear;
end;
4.3 加载csv文件
procedure TForm1.Button3Click(Sender: TObject);
begin
CSVDataset1.LoadFromCSVFile('exported.csv');
end;
5 运行程序
6 导出文件
导出的csv文件如果有中文,需要以utf8格式查看。