我想做一个vc/mfc访问sql server2005数据库的,多用户端访问一个数据库的。
c/s结构,会有访问冲突的问题吧?
用什么方法比较好呢?需要考虑什么问题呢?
希望大家提供一下实例。
请详细讲解一下

解决方案 »

  1.   

    补充一下,我的数据访问采用的vc/mfc+ado,理论上ado是可以支持远程数据库访问,
    主要问题在于,当多个客户端同时访问数据库的时候会出现问题,如访问冲突之类。
      

  2.   

    1、MFC不是线程安全的;
    2、ADO、OleDB等均不是线程安全的;so, One Thread One DB Connection. Then you can do anything you want.
      

  3.   

    就是比如我的客户端会在一个动作中,分为a,b,c三个需要进行数据库操作的动作,其中某些语句需要较长时间执行,那么这样的情况下,另一个客户端做了其他的动作,也需要访问数据库,这时候,那个客户端就没法做了。可是市面上很多c/s结构的软件产品,也不可能都只能一个客户端访问吧?
      

  4.   

    给你举个例子:
        线程A有4个Client需要访问数据库,线程B有5个Client需要访问数据库。
        你在线程A中创建一个DB Connection,这4个Client共享这个DBConnection。
        同理,线程B中也创建一个DBConnection,这5个Client共享这个DBConnection。
        这样,不管你怎么操作,都不会出问题。    当然,如果你想问N个Client访问同一条数据库记录时有逻辑上的混乱,则这是另外一个问题了,你可以去看看ado的相关文档。去看看“锁定类型”和“键值类型”。
      

  5.   

    以下两种模式,可供参考:
    1. 裸客户端模式。客户端直接调用比如ADO来访问数据库,这样就涉及到并发访问数据库的问题,数据库可支持多少个并发访问,各种版本的数据库不尽相同。
    2. 客户端--后台服务器的C/S模式。通过建立socket连接的方式,处理客户端和服务器的数据交互。后台服务器在本地根据性能需要,创建一定的ADO连接,访问数据库,并返回结果给客户端。