以前用本地数据库时,要实现查询、插入、删除、更新等功能时,在DELPHI中语句是这样写的:
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from a');
prepared:=true;
open;
end;
with adoquery1 do
begin
close;
sql.clear;
sql.add('delete from a');
prepared:=true;
excesql;
end;
...
在CS模式中,要考虑数据的并发性,以上的语句要怎么改进?是不是像下面这样,在每条SQL语句中显式的设置事务,有没有这个必要?
adoconnection1.begintrans;
try
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from a');
prepared:=true;
open;
end;
adoconnection1.committrans;
execpt
adoconnection1.rollbacktrans;
end;
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from a');
prepared:=true;
open;
end;
with adoquery1 do
begin
close;
sql.clear;
sql.add('delete from a');
prepared:=true;
excesql;
end;
...
在CS模式中,要考虑数据的并发性,以上的语句要怎么改进?是不是像下面这样,在每条SQL语句中显式的设置事务,有没有这个必要?
adoconnection1.begintrans;
try
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from a');
prepared:=true;
open;
end;
adoconnection1.committrans;
execpt
adoconnection1.rollbacktrans;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货