您的位置:首页 > 数据库

使用内存数据库/数据集以提高执行速度

2016-07-27 08:40 811 查看
http://wiki.lazarus.freepascal.org/How_to_write_in-memory_database_applications_in_Lazarus/FPC#TBufDataSet

如果你需要一个快速、单用户,无需事务管理,那就用MemDataset。

一些好处:
快速。因为都是在内存中干活,除非明确要求,数据不会与保存到硬盘。
无需外部dll文件,不需要服务器安装。
代码适合多平台。
容易维护。

加载csv文件:

procedure LoadFromCsv(DataSet:TDataSet);
var
vFieldCount:Integer;
I:Integer;
begin
try
//Assign SdfDataSetTemporary
with SdfDataSetTemporary do begin
Active:=False;
ClearFields;
FileName:=DataSet.Name+'.txt';
FirstLineAsSchema:=True;
Active:=True;
//Determine number of fields
vFieldCount:=FieldDefs.Count;
end;
//Iterate through SdfDataSetTemporary and insert records into MemDataSet
SdfDataSetTemporary.First;
while not SdfDataSetTemporary.EOF do begin
DataSet.Append;
//Iterate through FieldDefs
for I:=0 to vFieldCount-1 do begin
try
DataSet.Fields[I].Value:=SdfDataSetTemporary.Fields[I].Value;
except
on E:Exception do begin
MemoMessages.Append(TimeToStr(Now())+' Error while setting value for field: '
+DataSet.Name+'.'+DataSet.Fields[I].Name +'. '+E.Message);
end;
end;
end;
try
DataSet.Post;
except
on E:Exception do begin
MemoMessages.Append(TimeToStr(Now())+' Error while posting record to table: '
+DataSet.Name+'.'+E.Message);
end;
end;
SdfDataSetTemporary.Next;
end;
finally
SdfDataSetTemporary.Active:=False;
SdfDataSetTemporary.ClearFields;
end;
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lazarus memDataset