ADOQuery从数据库中查询的结果,使用ADOQuery1.SaveToFile('C:\ClubID.lm')保存成一个文件,然后准备把ClubID.lm导入到另一个相同结构的数据库中,程序写到ADOQuery1.LoadFromFile('C:\ClubID.lm');就不会再往下写了,如何把这些记录批量添加到数据库中呢?
解决方案 »
- 如何在窗体内部拖动也可以随意拖动窗体?
- 困饶我多时的问题??
- 谁提供个ftp上传我发个delphi技术手册英文pdf版和原代码delphi in a nutshell
- 用C#做一个QQ
- 哪里有十六进制编辑器软件下载,如Ulea??32之类的
- 如何使不带字库Epson TM300A打印机打出汉字???
- 如何改变listview整行选中的颜色.(在线)
- 请问如何控制打印机的坐标系刻度?
- sql的问题,急急!!
- 有没有清空数据库的最好方法?
- 为什么我的关机程序不能正常关机呢?
- 我用BDE数据库,定义了一个短整型字段。在更新这个字段的时候为什么会死机?把里面的内容清空有可以。时好时不好,高手帮帮忙。谢谢了
ACCESS好象也支持的.
ADOConnection.BeginTrans;//打开事务
adoquery.insert;//这里可以反反复复的增加数据
adoquery.filedbyname().as**:=**;
adoquery.post;//此时的数据只是被提交到了数据集 ADOConnection.CommitTrans;//事务提交 //数据真正的提交到数据库//数据的批量提交
ADOConnection.RollbackTrans;//事务回滚//取消后不让数据集的数据存入数据库
建一个测试表Test1,
字段 类型 主键
id int PK
name char(20) 建立一个TADOConnection对象名为ADOCnn;
属性设置如下
ADOCnn.Mode := cmWrite; //只写
ADOCnn.ADOCnn.CursorLocation := clUseClient; //客户端游标
}
procedure TForm1.BatchTest;
var
intId, I: integer;
begin
with TADOQuery.Create(nil) do
try
Connection := ADOCnn;
LockType := ltBatchOptimistic; //批量更新
CursorType := ctOpenForwardOnly; //前向游标
SQL.Text := 'select id,name from test1';
Open;
intId := GetNextId; //取得下一个编号
if not ADOCnn.InTransaction then
ADOCnn.BeginTrans;
try
//测试插入数据
for I := intId to intId + 10000 do
AppendRecord([I,'ququ']);
//批量更新,有几个参数,查查帮助
UpdateBatch();
ADOCnn.CommitTrans;
except
on E: Exception do
begin
CancelBatch(); //取消更新
ADOCnn.RollbackTrans;
if Application.MessageBox('批量导入失败,是否查看详细信息?',
'失败', MB_YESNO + MB_ICONERROR) = IDYES then
Application.MessageBox(PChar(E.Message), '详细错误信息', MB_OK + MB_ICONERROR);
exit;
end;
end;
finally
Free;
end;
end;//
function TForm1.GetNextId: integer;
begin
with TADOQuery.Create(nil) do
try
Connection := ADOCnn;
SQL.Text := 'select max(id) maxid from test1';
Open;
if IsEmpty then
Result := 0
else
Result := FieldByName('maxid').AsInteger;
Inc(Result);
finally
Free;
end;
end;
将结果集的数据保存到数据库,你可以再建一个TABLE之类的
然后循环插入就行了
以前好象是这么写的,没试过什么特别好的方法,但可以实现
var
i:integer;
adoquery.first;
while adoquery.eof do begin
with adotable do
begin
Append;
for i:=0 to adoquery.FieldCount-1 do
fields[i].value:=adoquery.fields[i].value;
post;
end;
next;
end;