Sql server 具有多个TADOCONNECTION的Bug
我已经使用ADO和SQL Server以及到一个数据库的不同连接解决了一个显示表错误。(详情请参阅) 另一个问题出现在尝试删除记录时 代码是这样的Sql server 具有多个TADOCONNECTION的Bug,sql-server,delphi,ado,Sql Server,Delphi,Ado,我已经使用ADO和SQL Server以及到一个数据库的不同连接解决了一个显示表错误。(详情请参阅) 另一个问题出现在尝试删除记录时 代码是这样的 function resettable (tablename, databasename, servername) : Boolean; var aADOQuery : TADOQuery; aADOConnection : TAdoConnection, begin /// Create ADO stuff aADOQuery
function resettable (tablename, databasename, servername) : Boolean;
var
aADOQuery : TADOQuery;
aADOConnection : TAdoConnection,
begin
/// Create ADO stuff
aADOQuery := TADOQuery.Create;
aADOConnection := TAdoConnection.Create;
/// connect to DB & Table
....
///
aADOQuery.sql.add('delete * from ' + Tablename;
aADOQuery.execsql;
/// free objects after use
....
end;
当数据库上只有ADOConnection
时,此代码工作正常。如果任何其他ADO连接进行了某些活动并进行了某些修改,则代码将在“数据库未更新”错误消息出现时失败
如何创建一个在删除记录语句之前进行更新的解决方案???正如我在前面的问题中所说的。省去所有麻烦,只使用一个连接。是的,这就是全部要点,共享连接以便它了解所有更改。只需创建一个TDatamodule并在表单之间共享它?是的,这正是您需要做的。e、 g.
空表(conn:TADOConnection;aTableName:string)
。或者使用您的DM中心TADOConnection
将其作为DM方法。在任何情况下,您都需要遵循重新查询
(或关闭并打开)您的TDataSet
,以反映对数据库的任何更改。您的第二个TADOConnection实例是否通过第一个实例所做的更改得到通知?。有趣的。。。如果是,告诉我怎么做,我会为你开一个赏金,给你500个代表@用户:看来您的应用程序设计有问题。如果这是一个多用户环境,并且您需要查看来自其他用户的更新(无需重新查询),那么您需要一个多层体系结构,其中一层处理所有数据库更改,它可以将这些更改通知其他客户端……这不是一个bug。正如我们中的一些人在其他问题中告诉您的那样,在您的应用程序中,这是一个糟糕的设计。与其一次又一次地解决这个问题(这本身就是设计拙劣的一个明显标志),不如先花点时间妥善解决它。