结上贴重问:ACCESS能允许多个线程同时读(select)或写(insert update)一个表吗?在线等

Symanteck 2011-02-19 05:10:11
ACCESS能允许多个线程同时读(select)或写(insert update)一个表吗?比如这段代码可以在多线程里执行吗?
string sql1 = "select * from CapData_G ";
OleDbCommand cmd1 = new OleDbCommand(sql1, conn);
OleDbDataReader dr1 = cmd1.ExecuteReader();
if (dr1.Read())
{
...
}
...全文
463 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Jet早就在10年前就被嵌入应用程序开发数据库系统的专业程序员而淘汰了,微软公司取而代之的是 SQL Server Compact。这个数据库系统既可以用在手机,也可以用于桌面应用程序,而且是跟Jet驱动一样,只要将DLL文件拷贝(引用)到你的项目中就可以使用的。(而无需安装独立的数据库系统)
  • 打赏
  • 举报
回复
我再多解释一些概念,什么是“文件数据库”。

Jet 4.0 是一个文件数据库的驱动程序。文件数据库与我们知道的c/s数据库不同。c/s数据库是在客户端驱动跟服务器系统之间传送sql命令和返回数据,而文件数据库则是客户端直接以文件系统api来修改网络共享目录上的文件。显然,Jet支持多用户。同时Jet也支持数据库事务。

当客户端进程出错,或者网络故障,正在被共享而修改的数据库加锁文件通常就坏了(或者是被锁死了),这时你就需要启动mdb文件修复程序来修改它。所以在好的使用Jet引擎的程序中,其第一次打开数据库时,其实会首先去修复数据库,然后才打开。但是假设数据库确实坏了,这个修复往往会付出丢失1个或者多个数据块中的记录的代价,才能保证应用程序顺利继续执行。
  • 打赏
  • 举报
回复
首先可以看看网页 http://support.microsoft.com/kb/303528/zh-cn

找到中间“针对网络环境的其他最佳做法”,它解释文件数据库在支持多用户时什么机制,为什么容易损坏数据库文件,等等。
doubleu2005 2011-02-19
  • 打赏
  • 举报
回复
同时读还救活,千万别同时写,已经吃过大亏了!!!!!如果要同时读写建议还是sql数据库
hsq1011 2011-02-19
  • 打赏
  • 举报
回复
在win2003 32bit 下,系统限制一个进程最多打开64个数据库连接,不管是不是同一个数据库,这是数据库底层驱动的限制,如果你是同一个数据库连接多线程读写,正如 楼上所说要看数据库本身的锁机制了
chuzhaowei 2011-02-19
  • 打赏
  • 举报
回复
其实写的时候,数据库系统它本身就有锁的机制。


yalan 2011-02-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 symanteck 的回复:]
能不能说具体一点啊?? 能不能多一个表多线程读,对一个表多线程写,或者一个线程读,一个线程写?
[/Quote]

无论加多少个线程同时读没问题,多线程同时写也没问题,写的线程加上个Lock就行了
yalan 2011-02-19
  • 打赏
  • 举报
回复
同时读没问题,但是如果同时写可能会有问题

建议多线程同时写的时候加个锁
Symanteck 2011-02-19
  • 打赏
  • 举报
回复
能不能说具体一点啊?? 能不能多一个表多线程读,对一个表多线程写,或者一个线程读,一个线程写?
bdmh 2011-02-19
  • 打赏
  • 举报
回复
能写,不过可能引起意想不到的问题,要看具体的情况

111,080

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧