日期:2014-05-20  浏览次数:20777 次

c#2.0写access数据库,有什么简便的方法
c#2.0写access数据库,有什么简便的方法
可能有多个线程同时写到一个表里,该怎么处理

------解决方案--------------------
只要别让产生死锁就行

------解决方案--------------------
跟其它数据库访问一样,例如:
oledbconnection conn = new oledbconnection (connectionstring);
conn.open();
oledbcommand cmd = new oledbcommand ( "select * from mytable ", conn, null);
oledbadapter ad = new oledbadapter (cmd);
datatable dt = new datatable();
ad.fill(dt);
conn.close();
return dt;
------解决方案--------------------
学习,~!
------解决方案--------------------
up
------解决方案--------------------
跟其它数据库访问一样,例如:
oledbconnection conn = new oledbconnection (connectionstring);
conn.open();
oledbcommand cmd = new oledbcommand ( "select * from mytable ", conn, null);
oledbadapter ad = new oledbadapter (cmd);
datatable dt = new datatable();
ad.fill(dt);
conn.close();
return dt;

------解决方案--------------------
up
------解决方案--------------------
跟其它的一样.
------解决方案--------------------
多个线程同时写操作,你需要在线程进行写的过程代码前后进行加锁和解锁。
------解决方案--------------------
数据库管理系统处理多个请求的时候,应该是数据库管理系统的事,比如sql server支持行级锁定,access支持表级锁定。也还有列级锁定的。这个参考相应数据库的帮助文档。这是针对对数据库的操作应该考虑的。
至于应用程序的线程处理,应该是对被处理数据实行线程同步。比如有两个线程,一个线程需要等待另一个线程处理后的数据,那么就该锁定此数据,等待处理线程结束,另一个线程才可以去取此数据,可以使用互斥量来实现。具体参考msdn文档。
------解决方案--------------------
如何加锁和如何解锁,关注!!!
------解决方案--------------------
依然写一个数据层 做表的映射
------解决方案--------------------
数据库管理系统处理多个请求的时候,应该是数据库管理系统的事,比如sql server支持行级锁定,access支持表级锁定。也还有列级锁定的。这个参考相应数据库的帮助文档。这是针对对数据库的操作应该考虑的。
至于应用程序的线程处理,应该是对被处理数据实行线程同步。比如有两个线程,一个线程需要等待另一个线程处理后的数据,那么就该锁定此数据,等待处理线程结束,另一个线程才可以去取此数据,可以使用互斥量来实现。具体参考msdn文档。
---------------------------

这是事务吧,里面说的都是什么脏读,幻想读之类的

楼主说的是什么多人操作数据库的时候io冲突,全lock一下
------解决方案--------------------
up

------解决方案--------------------
1.封装access数据库操作类.在对添加,修改,删除等操作时加锁.
2.多线程通过一个Manager创建出一个数据库操作类(一个线程一组数据库操作类)
3.定义对象池(将Manager扩展成池化功能),要用数据库操作的线程去空闲池中取,如里空闲池中没有(做相应处理[如,等待或一段时间返回一个异常])与2相同(一个线程一组数据库操作类)
这里的一组(可能会有多个类,但逻辑划分为一个整体)
------解决方案--------------------
帮顶~~

------解决方案--------------------

------解决方案--------------------
up