DCOM + ADOConnection三层,执行数据库操作事务未提交?该怎么解决
DCOM + ADOConnection三层,执行数据库操作事务未提交?
我的程序是用的客户端用DCom连接到中间件,中间件使用AdoConnection连接到数据库。
我在中间件中写一个Create Table的语句,做法为:
1.使用TADOQuery,直接对其进行赋值,没有做其他属性设置
2.代码如下:
if ConnectDB then
begin
try
Connect_db.BeginTrans;
try
with tempUpdateQuery do
begin
Close;
SQL.Clear;
SQL.Add(vSQL);
ExecSQL;
end;
Connect_db.CommitTrans;
except
on e:Exception do
begin
OutMsg :='执行语句错误:' + E.Message;
Connect_db.RollbackTrans;
end;
end;
finally
stopdb;
end;
end;
遇到的问题:
1.如果加上事务处理的话,会一直报:无法在此会话中启动更多的事务(其他地方干干净净,没有做过事务处理)
2.不用事务处理,能正确执行,但是执行完毕后我到服务器中select 该表,发现被锁现象(或者说事务未能提交)。这是何原因呢?
------解决方案--------------------
接分了
------解决方案--------------------
楼主做事很细致,发帖之后还把代码组织了。
------解决方案--------------------
中间件在注册时配置【事务】改为“不支持”或者“支持”
收藏
我的程序是用的客户端用DCom连接到中间件,中间件使用AdoConnection连接到数据库。
我在中间件中写一个Create Table的语句,做法为:
1.使用TADOQuery,直接对其进行赋值,没有做其他属性设置
2.代码如下:
if ConnectDB then
begin
try
Connect_db.BeginTrans;
try
with tempUpdateQuery do
begin
Close;
SQL.Clear;
SQL.Add(vSQL);
ExecSQL;
end;
Connect_db.CommitTrans;
except
on e:Exception do
begin
OutMsg :='执行语句错误:' + E.Message;
Connect_db.RollbackTrans;
end;
end;
finally
stopdb;
end;
end;
遇到的问题:
1.如果加上事务处理的话,会一直报:无法在此会话中启动更多的事务(其他地方干干净净,没有做过事务处理)
2.不用事务处理,能正确执行,但是执行完毕后我到服务器中select 该表,发现被锁现象(或者说事务未能提交)。这是何原因呢?
------解决方案--------------------
接分了
------解决方案--------------------
楼主做事很细致,发帖之后还把代码组织了。
------解决方案--------------------
中间件在注册时配置【事务】改为“不支持”或者“支持”
收藏