社区
Delphi
帖子详情
如何在多线程中使用ADO数据控件操作数据库?
zlnet
2005-01-10 02:16:07
本人在做一个多线程程序,需要在线程中操作数据库,请问
1:能不能在线程中使用主窗体的ADO控件(TADOConnection、TADOQuery、TADOStoredProc),看书好像不能多线程操作VCL?
2:如果不能,在线程中该怎么做?
...全文
329
13
打赏
收藏
如何在多线程中使用ADO数据控件操作数据库?
本人在做一个多线程程序,需要在线程中操作数据库,请问 1:能不能在线程中使用主窗体的ADO控件(TADOConnection、TADOQuery、TADOStoredProc),看书好像不能多线程操作VCL? 2:如果不能,在线程中该怎么做?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zlnet
2005-01-10
打赏
举报
回复
问题解决,同步的方法还是有问题,最后采用动态创建的方法来解决的,谢谢各位的大力帮助!
zlnet
2005-01-10
打赏
举报
回复
顶!
Kshape
2005-01-10
打赏
举报
回复
还有:
每一个线程最好都有ADO元件新的实例,如果你把ADOConnection1与ADOQuery1
等放在数据模块DataModule1,则每个线程都要新建DataModule1的实例,则内含
的元件自动也是新的实例
如果不注意区别
会出现“Connection is busy with results For another command”的错误哦
Kshape
2005-01-10
打赏
举报
回复
楼上说的不错
最好动态生成
随时注意释放
避免线程中的冲突
weidegong
2005-01-10
打赏
举报
回复
关于多线程使用ADO数据控件的问题,根据我的经验还是在线程中动态生成为好,减少耦合,同时减少线程之间的干扰。尤其是ADOConnection,为一个线程分配一个。在线程数目不是非常多的时候(<32?具体数目记不清了)的时候,完全没有问题。如果你的线程数目非常多,可能就需要用到连接池,每次进行数据库操作的时候,从连接池中取得当前空闲的连接。
另外,多线程创建ADO对象时,需要执行CoInitialize
代码演示如下:
constructor TAlarm.create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
CoInitialize(nil);
self.log('创建ADO对象...');
dbcon:=TDataBaseConnection.Create();
ADOConOA:=TADOConnection.Create(application);
ADOConOA.LoginPrompt:=false;
ADOQueryOA:=TADOQuery.Create(application);
ADOQueryOA.Connection:=ADOConOA;
self.log('创建ADO对象成功!');
end;
zlnet
2005-01-10
打赏
举报
回复
我想在每个线程中都创建ADO控件是不是可以?我的客户端数量不大,最多只有4、5个,但操作比较频繁。
boatzm
2005-01-10
打赏
举报
回复
在线程中创建该对象,并且由于ado 是个com的东东,
如果是跨线程的使用,使用的时候要注意线程调用com的套间的区别。找到适合自己的方式。
还有注意做好线程互斥的一些东西。
zlnet
2005-01-10
打赏
举报
回复
怎么没人帮我吗?
zlnet
2005-01-10
打赏
举报
回复
再顶起来!!!
ahyf
2005-01-10
打赏
举报
回复
会有问题的。
zlnet
2005-01-10
打赏
举报
回复
再来,怎么没人啊??
cangwu_lee
2005-01-10
打赏
举报
回复
Thread -> Synchronize(PushTheButton); -> VCL
zlnet
2005-01-10
打赏
举报
回复
先顶一下!!
Visual C++编程技巧精选500例.pdf
188 如何实现
多线程
多任务? 189 如何
使用
临界区同步线程? 190 如何调用帮助文件(.chm)? 第10章 字符串 191 如何对字符串进行连接? 192 如何对字符串进行比较? 193 如何从字符串
中
存取字符? 194 如何计算一个字符串...
vc实例精通源码,windows基本
控件
的
使用
Demo
03_ActiveXInDlg 在应用程序
中
使用
ActiveX
控件
。 04_ActiveXInWeb 在浏览器
中
使用
ActiveX
控件
。 05_MyActiveX3 在VC
中
显示动态的GIF动画。 06_RegOCX 在程序
中
注册和注销ActiveX
控件
。 第18章(\ Chapter...
C# 简单
ADO
.NET
数据
库
教程
基于Visual Studio 2019环境下,主要讲解C#
中
ADO
.net的
操作
,涉及:
数据
库
连接测试、Connection类的语法和
使用
、Command类的语法和
使用
、DataReader类的语法和
使用
、实现
数据
库
的增、删、改、
操作
;
Access
数据
库
批量密码提取压缩工具
4.
多线程
压缩,充分发挥多核CPU能力,压缩过程可手动终止; 5. 支持拖放,可将
数据
库
直接拖放到MDBCompact.exe文件上,或程序的压缩列表
中
; 6. 系统小巧(只有46KB),不需安装Office软件,不依赖
ADO
等
控件
,即使是...
Delphi7编程100例
用
ADO
控件
打开Access
数据
库
DBGrid
中
的记录到Html页面的转换 在DBGrid
中
实现任意方向查找 在DBGrid
中
通过动态下拉列表查找记录 用DBGrid组件制作下拉列表形式的提示框 利用书签处理DBGrid
中
的多个记录 ...
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章