TClientDataSet[1]: 浏览测试数据
2017-08-03 00:03
134 查看
希望这次学习能对其内存协调方式有所了解, 顺便学点数据库的知识.
TClientDataSet 是一个内存数据集(说”数据表”对不住它), 其内存数据可存取到本地(.cds 或 .xml 格式).
用 TDBGrid 可方便查看其内存数据, 但需要用数据源组件(如: TDataSource)桥接一下:
TDBGrid.DataSource ← TDataSource.DataSet ← TClientDataSet
Program Files\Common Files\CodeGear Shared\Data 下有官方提供的测试数据, 下面程序可浏览这些数据:
//假定已在设计时挂接好: ClientDataSet1、DataSource1、DBGrid1, 并添加一个 ListBox1
uses IOUtils, Types;
var DataPath: string;
procedure TForm1.FormCreate(Sender: TObject);
var
sArr: TStringDynArray;
s: string;
begin
{ 获取测试数据所在的路径 }
DataPath := GetEnvironmentVariable(‘COMMONPROGRAMFILES’) + ‘\CodeGear Shared\Data\’;
{ 获取路径下所有 cds 文件 }
sArr := TDirectory.GetFiles(DataPath, ‘*.cds’);
{ 添加到列表 }
for s in sArr do ListBox1.Items.Add(ExtractRelativePath(DataPath, s));
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ClientDataSet1.LoadFromFile(DataPath + ListBox1.Items[ListBox1.ItemIndex]);
end;
其中的:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ClientDataSet1.LoadFromFile(DataPath + ListBox1.Items[ListBox1.ItemIndex]);
end;
//可换成:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ClientDataSet1.Active := False;
ClientDataSet1.FileName := DataPath + ListBox1.Items[ListBox1.ItemIndex];
ClientDataSet1.Active := True;
end;
//或换成:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ClientDataSet1.Close;
ClientDataSet1.FileName := DataPath + ListBox1.Items[ListBox1.ItemIndex];
ClientDataSet1.Open;
end;
从源码中看 Open/Close 方法和 Active 属性的关系:
{ TClientDataSet 的继承关系: TDataSet - TCustomClientDataSet - TClientDataSet }
procedure TDataSet.Open;
begin
Active := True;
end;
procedure TDataSet.Close;
begin
Active := False;
end;
从源码中查看 LoadFromFile 对 Open/Close 方法的调用:
procedure TCustomClientDataSet.LoadFromFile(const FileName: string = ”);
var
Stream: TStream;
begin
Close;
…
LoadFromStream(Stream); { LoadFromFile 调用了 LoadFromStream}
…
end;
procedure TCustomClientDataSet.LoadFromStream(Stream: TStream);
begin
Close;
ReadDataPacket(Stream, False);
Open;
end;
TClientDataSet 是一个内存数据集(说”数据表”对不住它), 其内存数据可存取到本地(.cds 或 .xml 格式).
用 TDBGrid 可方便查看其内存数据, 但需要用数据源组件(如: TDataSource)桥接一下:
TDBGrid.DataSource ← TDataSource.DataSet ← TClientDataSet
Program Files\Common Files\CodeGear Shared\Data 下有官方提供的测试数据, 下面程序可浏览这些数据:
//假定已在设计时挂接好: ClientDataSet1、DataSource1、DBGrid1, 并添加一个 ListBox1
uses IOUtils, Types;
var DataPath: string;
procedure TForm1.FormCreate(Sender: TObject);
var
sArr: TStringDynArray;
s: string;
begin
{ 获取测试数据所在的路径 }
DataPath := GetEnvironmentVariable(‘COMMONPROGRAMFILES’) + ‘\CodeGear Shared\Data\’;
{ 获取路径下所有 cds 文件 }
sArr := TDirectory.GetFiles(DataPath, ‘*.cds’);
{ 添加到列表 }
for s in sArr do ListBox1.Items.Add(ExtractRelativePath(DataPath, s));
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ClientDataSet1.LoadFromFile(DataPath + ListBox1.Items[ListBox1.ItemIndex]);
end;
其中的:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ClientDataSet1.LoadFromFile(DataPath + ListBox1.Items[ListBox1.ItemIndex]);
end;
//可换成:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ClientDataSet1.Active := False;
ClientDataSet1.FileName := DataPath + ListBox1.Items[ListBox1.ItemIndex];
ClientDataSet1.Active := True;
end;
//或换成:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ClientDataSet1.Close;
ClientDataSet1.FileName := DataPath + ListBox1.Items[ListBox1.ItemIndex];
ClientDataSet1.Open;
end;
从源码中看 Open/Close 方法和 Active 属性的关系:
{ TClientDataSet 的继承关系: TDataSet - TCustomClientDataSet - TClientDataSet }
procedure TDataSet.Open;
begin
Active := True;
end;
procedure TDataSet.Close;
begin
Active := False;
end;
从源码中查看 LoadFromFile 对 Open/Close 方法的调用:
procedure TCustomClientDataSet.LoadFromFile(const FileName: string = ”);
var
Stream: TStream;
begin
Close;
…
LoadFromStream(Stream); { LoadFromFile 调用了 LoadFromStream}
…
end;
procedure TCustomClientDataSet.LoadFromStream(Stream: TStream);
begin
Close;
ReadDataPacket(Stream, False);
Open;
end;
相关文章推荐
- TClientDataSet[1]: 浏览测试数据
- TClientDataSet[15]: 测试添加与恢复
- 如何使用GIST+LIBLINEAR分类器提取CIFAR-10 dataset数据集中图像特征,并用测试数据进行实验
- 我喜欢的经典dataset测试数据库
- TClientDataSet[4]: 数据浏览(设计时)
- C#手动创建Dataset并填充测试数据
- DataSet测试数据的准备
- TClientDataSet[6]: 读取 TClientDataSet 中的图片数据
- java实现网上在线支付--06,07,08_在线支付_编写将数据提交给易宝支付的JSP页面,集成和测试向易宝发送支付请求,实现浏览器自动向易宝发送支付请求
- C#手动创建Dataset并填充测试数据
- C#手动创建Dataset并填充测试数据
- C#手动创建Dataset并填充测试数据
- 如何使用GIST+LIBLINEAR分类器提取CIFAR-10 dataset数据集中图像特征,并用测试数据进行实验
- 【已解决】unitils使用@DataSet插入测试数据,测试结束后不能回滚
- Hibernate插入数据效率测试
- 使用EXPDP/IMPDP导入导出表中数据/元数据测试
- SQL文测试数据时,注意对0件的测试!!!【0件时,防止空指针异常!】
- caffe中MNIST数据集训练与测试LeNet
- 测试数据建模
- Impala 大数据测试