我用以下代码:
ADOConnection1.BeginTrans;
try
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(...); //SQL语句1
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(...); //SQL语句2
ADOQuery1.ExecSQL;
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;程序执行过程中没有任何错误提示,但从结果看好象只有SQL语句2被执行了,
SQL语句1没有被执行,不知道为什么???请高手指点……???
ADOConnection1.BeginTrans;
try
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(...); //SQL语句1
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(...); //SQL语句2
ADOQuery1.ExecSQL;
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;程序执行过程中没有任何错误提示,但从结果看好象只有SQL语句2被执行了,
SQL语句1没有被执行,不知道为什么???请高手指点……???
try
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(...); //SQL语句1
// ADOQuery1.ExecSQL;
//ADOQuery1.Close;
// ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(...); //SQL语句2
ADOQuery1.ExecSQL;
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;
我认为,
你用2个QUERY看看,
然后应该知道了
ADOConnection1.BeginTrans;//在try的内部。
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(...); //SQL语句1
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(...); //SQL语句2
ADOQuery1.ExecSQL;
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;
为什么我的写法不可以呢?请教。
我的写法在处理上实际应用过,没有认何问题。可以真证提高数据处理的速度。
外面有什么问题吗???
不知道是不是我的D6有什么问题,要不要什么补丁……
不过我确实没从书上见过您这样写的!
这是根据SQL SERVER实际处理。得出的。
即然,你认为是错的,那我也不想说什么,:)
就当然,无中生有好了
to (jtx1226(幻若雪晴))的不知如果两个都是INSERT INTO 是不是可以?
BUT………………不要生气啊!大家就事论事…… :)
谢谢你!!!!
第二个语句是为A表创建索引的话,程序运行到此会提示“找不到A表”的错误,
好象ADOQuery1.ExecSQL没有起作用似的…………
也许能看出来!!
启动事务之后,在有些情况下执行Sql语句是不会报错的,尤其是在执行了分布式事务处理的时候。
try
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update GroupInf set check=''0'' where check=''1'''); //SQL语句1
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into GroupInf values (''01001'',''a'',''1'')'); //SQL语句2
ADOQuery1.ExecSQL;
ADOConnection1.CommitTrans;
except
ADOConnection1.RollbackTrans;
end;
所以每一次向表里插一条新记录,都要把原来的check=1修改为0。