我再BDE中使用Database.StartTransaction 时出错,提示不能对关闭的数据库操作,可数据库已经打开,什么原因?如何使用?(100分)

  • 主题发起人 主题发起人 清风97
  • 开始时间 开始时间

清风97

Unregistered / Unconfirmed
GUEST, unregistred user!
我再BDE中使用Database.StartTransaction 时出错,提示不能对关闭的数据库操作,可数据库已经打开,什么原因?如何使用?
 
不知道你具体代码,可能你是打开了一个只读数据集,但一般也不会出现这个错误,也有可能
你在程序某处写Database1.close而你没发现,在StrtTransaction前面显式地写Database1.open
试试,如果还不行,就在Databhase1的AfterOpen事件中找原因。
 
在StrtTransaction前面显式地写Database1.close
 
自己多找找原因吧。一定是你的错。用断点一步一步看看。
另外,在StartTransaction 前最好加上这一句。
if DataBase.InTransaction then
DataBase.Commit;
try
DataBase.StartTransaction;
...
DataBase.Commit;
except
DataBase.RollBack;
end;
 
数据库参数默认,开始就连接打开,代码如下:
try
form1.Database.Open;
form1.Database.StartTransaction ;
query.SQL.Clear ;
query.SQL.Text :='insert into ……'
query.ExecSQL;
……
form1.Database.Commit ;
except

form1.Database.Rollback;
……
end;
不知哪里不对。
还是不行。
 
to 清风97:
在StrtTransaction前面显式地写
Database1.close;
Database1.open; 看看。
另外,我想问你几个问题,也许能够帮你。
1。你有没有改变数据库系统设置比如关闭了事务处理。但你却忘记作了修改。
2。你在设计时,试着打开database1的时候,即database1.open时,能否打开?
若不能打开,说明你的参数设置有错,或者数据库没有启动。
3。你的query1的databasename是否等于database的databasename?如果不是,
你启动的事务便没有意义。
 
谢谢各位。
现在看来已经可以了。
 
后退
顶部