每次保存数据前,都要检测该记录是否已经在数据库中
存在,如果存在则更新,否则就插入。我的问题是:目前有两种检测数据是否已经存在的方法,
请大家评论一下,哪种方法更有效率?第一种方法:
for ix:=0 to 1000 do
begin
ADODataSet1.Active:=False;
ADODataSet1.CommandType:=CmdText;
ADODataSet1.CommandText:='select * from table1 where id=:ix';
ADODataSet1.Active:=True;
if ADODataSet1.IsEmpty then
//插入
else
//修改
end;第二种方法:
ADODataSet1.Active:=False;
ADODataSet1.CommandType:=CmdText;
ADODataSet1.CommandText:='select * from table1 ';
ADODataSet1.Active:=True;
for ix:=0 to 1000 do
begin
findflg:=False
ADODataSet1.First; while not ADODataSet1.Eof do
begin
if ADODataSet1['id']:=ix then
findflg:=true;
end; if findflg then
//修改
else
//插入end;以上语法可能不完整,但请大家主要考虑思路先谢了,各位!
存在,如果存在则更新,否则就插入。我的问题是:目前有两种检测数据是否已经存在的方法,
请大家评论一下,哪种方法更有效率?第一种方法:
for ix:=0 to 1000 do
begin
ADODataSet1.Active:=False;
ADODataSet1.CommandType:=CmdText;
ADODataSet1.CommandText:='select * from table1 where id=:ix';
ADODataSet1.Active:=True;
if ADODataSet1.IsEmpty then
//插入
else
//修改
end;第二种方法:
ADODataSet1.Active:=False;
ADODataSet1.CommandType:=CmdText;
ADODataSet1.CommandText:='select * from table1 ';
ADODataSet1.Active:=True;
for ix:=0 to 1000 do
begin
findflg:=False
ADODataSet1.First; while not ADODataSet1.Eof do
begin
if ADODataSet1['id']:=ix then
findflg:=true;
end; if findflg then
//修改
else
//插入end;以上语法可能不完整,但请大家主要考虑思路先谢了,各位!
解决方案 »
- 移动内存指针合并内存数据
- 为何我无法在DELPHI5.0 (WINDOWS2000操作系统) 看到ORACLE8.05数据记录中的中文.
- 做打印是用RAVE还是TQuickRep好
- delphi7,如何操作listbox中的item,当单击某项后弹出窗体。
- 这个怎么实现?
- 如何在程序中设置某个字段的默认值(Access 2000)?对于字符串型的允许空字符串?
- 建立自己的文件类型的问题!!
- Delphi导出数据到Excel时报OLE error 800A03EC
- 什么是群集,双机群集?有什么作用?
- sqlserver代码甩卖
- 当点击一个Button后,出现一个窗体,在窗体中怎么得到此Button的Caption, Name?
- 学delphi 4天,写的第段代码:通用查询模块
我给一种方法
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from 表名 where 条件');
adoquery1.open;
//判断是否有相同记录
if adoquery1.recordcount>0 then
begin
用update命令更新
end
else
begin
用insert命令插入
end;
所有的要保存的ID) ,再執行保存.
所以占用的网络资源要多。第二种方法,按刘维先生的说法,把CursorLocation设
为Client,CacheSize设为1000,则其实查找工作很大一部分在本机内存中完成,所
以速度要快。大家以为呢?
'select count(*) as num from table1 where id=:ix'
这样更有效一些。
软件结构是C/S
应该在sql2000中对Table1设置Constraints,并对查询字段加indexfor ...
{ try
insertit;
except
updateit;
end;}若是oracle update可以在后台完成,sql2000没用过不好说