本人看这个问题已经很久了,就是没搞定。采用多线程操作数据库,如我在操作时,其他人都得等待,等我操作完后别人再操作(可能有人会说用事务控制,但这样锁定整个表)。一旦处理完其他人再操作。
还有打开两个客户端程序,这样还是有问题。如果在同一个程序中可以操作,打开两个客户端,将怎么处理?怎样才能控制住?很是郁闷死!
烦各位讲讲,最好是用程序或程序结构说明,关键的词或语句就OK了

解决方案 »

  1.   

    你有不少对数据库系统的误区。也许你进使用过FoxBase之类的早期小“数据库”。拿SQL Server来说,默认的事务保护级别是细粒度的“记录级”的,而不是“表级”的。即使对access,也是对数据页(好像是4K大写的区域)进行上锁,也不是表级锁。并且所有T-SQL命令都是工作在事务当中的,即使你不写上begin transaction命令,系统也会自动给你加上。SQL Server也支持脏读(例如使用 with(nolock) 标识)、快照读等手段提供,这些对于不需要负责任的、不重要的操作可以使用,例如临时查询一下商场的营业状况,就可以这样在查询的时候不做任何互斥的保护动作,而财务入账则必须在查询的时候禁止其它进程读写相关数据。因此在SQL Server编程方面及其简单。例如使用ADO.Net的时候使用 SQLTransaction 对象的两个简单命令在操作前后控制事务的开始和提交即可。