如何在多线程中向数据库表中插入内容?(50分)

  • 主题发起人 xuekunli
  • 开始时间
X

xuekunli

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个数据采集处理系统中,需要将实时采集到的相关参数实时存入数据库中。对数据的
采集和处理使用了多线程。在处理线程中,处理和执行相关操作后,就将数据存入数据库表中。
。程序能运行,但运行几分钟后,就出错,且每次出错的位置不固定。请教我的问题出在哪里?
在多线程中向数据库表中插入内容应注意什么?
 
要注意并发的处理。
 
是否处理了线程的同步?
 
论坛上有相关的问题了,,自己去搜一搜,,,也可以去看看我发过的帖子:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1233274
 
我的系统共采集四路数据,采集一路时正确,采集两路以上时,往数据库中添加记录就要出错?
为什么?与数据库系统的设置有关吗?我用的是Oracle8。1。5。
 
哦,,玩oracle的所,,呵呵,,我喜欢,,,
由于你用了多线程,,所以你必须考虑冲突或死锁的问题,,因此你必须将线程进行同步,
不然,,呵呵,,不说了嘛,,,,你也说了塞,,采集一路时正确,采集两路以上时,
往数据库中添加记录就要出错,,,为什么出错,,?就是因为线程间没有隔离好,,造成了
冲突,,,当你的一个线程往数据库中加数据的时候,,,数据库的表是被锁定了的,,你的
其它线程再向它加数据,,当然出错,,,
至于线程间的同步的方法,我在论坛上有帖子,,,其它的很多兄台也都有精辟的发言,去搜搜吧,
下面是我发过的,,,
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1237936
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1233274
 
给你两个API,自己去查吧:
1.createMutex
2.waitsingleobject
知道怎么用后把插入记录代码加在中间就行了。
 
你用什么方式连接数据库?dbExpress应该是没问题,据说它是线程安全的,
如果用ADO要用CoInitialize
 
你用什么方式连接数据库?dbExpress应该是没问题,据说它是线程安全的,
如果用ADO要用CoInitialize
请问dbExpress要如何用呀,还有ADO的CoInitialize也是如何用???
 
最好不要用dbExpress,dbExpress只能支持某个版本的Database Server
 
能解释一下CoInitialize吗[?]
 
顶部