C#多线程写数据库

2025-02-26 03:57:40
推荐回答(2个)
回答1:

首先对数据库(尤其是 Access)使用多线程大多不会提高效率(除非 SQL 中有耗时但不好资源的操作,如 T-SQL 中休眠之类的语句)。

建议楼主:使用队列,将要执行的 SQL 语句放入队列中(如:System.Collection.Queue 或 ArrayList),然后用一根线程一条一条执行,另外 Access 不支持事物回滚只有自己想办法实现了。滥用多线程会加大程序开发的难度,以及包括程序的不稳定。

另外: cbyvft 的答案“…… 所有的线程使用同一个连接”
,是严重错误的!!连接对象 Connection 不能迸发,也就是不能多根线程共享一个连接对象,否则很容易引发异常(报错为:...基础对象与 RAW 分离之类的信息)。

若非要用多线程来做,我可以给你一段代码(我以前开发的项目中一部分),请加我的“百度Hi”并发消息给我,我传给你。
我不在这里帖代码了,因为实现的代码较多,而且比较复杂(使用多线程要考虑很多问题,代码要硕壮通用,所以代码量较大)。

回答2:

[BlackSc.rar]
http://www.pudn.com/downloads67/sourcecode/app/detail241582.html
专门用于号码过滤功能的企业级应用软件!里面用到通信、多线程、数据库、文件处理等多项技术。 (2007-01-12, CSharp, 101KB, 45次)