1、请教各位高手:如用以下代码创建了一个TADODataSet控件,是不是用完了之后需要用代码释放它吗?还是等待Form关闭的时候,自动释放它(会自动吗?)
2、直接在DataModule里面创建TADODataSet,如果创建多个都是连接到一张表,会出现什么问题吗?有没有这方面的文章?谢谢!
请多多指教!
2、直接在DataModule里面创建TADODataSet,如果创建多个都是连接到一张表,会出现什么问题吗?有没有这方面的文章?谢谢!
请多多指教!
解决方案 »
- 在DLL的导出过程的参数中如何使用引用传递(var),以供VC成功调用?或请推荐变通方案!
- 2005说分手, 巨痛中......
- 请教DBGridEh1排序问题
- 高分求教:FastReport中如何获取Memo自动伸展(stretch)后的高度?
- 知道了窗体的句柄,请问如何通过这个句柄获得该应用程序的完整路径?
- EOleSysError错误,
- 神啊! 救救我吧! :)
- 让我们一起来迎接新控件时代的到来吧! 转载luke fan 的blog
- ado连接问题!数据库打开速度讨论
- 一个奇怪的问题!!!请帮助解决,谢谢
- 请各位大虾帮帮忙.谢了!
- 特大喜讯.杭州的Delphi爱好者值得一看.请意向者速速速联系.
如果用TAdoDataSEt.Create(Application), Owner为Application, 则应用程序在关闭时自动释放.
2.一般不会有问题.但要注意记录死锁.
2.在一个数据模块中创建多个连一个表,如果使用多线程的时候注意你的并发操作时候的互相的影响;不做同步的并发操作没什么关系;
ADOdatasettmp : TADODataSet;
begin
{...}
try
ADOdatasettmp := TADODataSet.Create(form1);
ADODatasettmp.parent := form1;
ADOdatasettmp.Connection := ADOConnection1;
ADOdatasettmp.CommandText :='select * from department ';
ADOdatasettmp.Open;
finally
ADOdatasettmp.Close;
ADOdatasettmp.Free;
end;
end;
end;
try
adoconnection1.begintrans;
{执行你对数据库的操作}
adoquery1.execsql;
adoconnection1.commitTrans;
except
adoconnection1.RoolbackTrans;
end;还有,SQL SERVER自己也提供也防止记录死锁的功能
看实际需要,看你的并发操作是不是很多;
最乐观的情况是认为每个事务提交的时候都会最终被成功执行,
多用户之间不会发生什么影响,这样的情况付出很大的死锁风险;而且容易出现脏数据;
好处是各个操作数据的客户或(线程)对资源利用效率高;
最悲观的情况是认为每个事务提交都会早成互相影响,这是高的锁定和隔离级别会让
数据库保持最安全的一致性和避免死锁,但是会大大降低对资源的利用;
根据具体情况设置适合自己的数据库隔离级别