c/s结构,会有访问冲突的问题吧?
用什么方法比较好呢?需要考虑什么问题呢?
希望大家提供一下实例。
请详细讲解一下
16 个解决方案
#1
设置线程锁或是数据库锁,
对于访问同一个数据的话,之允许一个用户连接,其他设置等待~~~
对于访问同一个数据的话,之允许一个用户连接,其他设置等待~~~
#2
数据库本身会有读写锁等来保护...
#3
可是像很多c/s结构的软件,难道就是只能允许一个用户进行链接吗
#4
另外,如果有访问冲突的情况要怎么办?
#5
数据库自身会有控制,你不用担心
#6
补充一下,我的数据访问采用的vc/mfc+ado,理论上ado是可以支持远程数据库访问,
主要问题在于,当多个客户端同时访问数据库的时候会出现问题,如访问冲突之类。
主要问题在于,当多个客户端同时访问数据库的时候会出现问题,如访问冲突之类。
#7
1、MFC不是线程安全的;
2、ADO、OleDB等均不是线程安全的;
so, One Thread One DB Connection. Then you can do anything you want.
2、ADO、OleDB等均不是线程安全的;
so, One Thread One DB Connection. Then you can do anything you want.
#8
数据库都有冲突考虑,主要你说的冲突是什么样的冲突,你光说冲突谁能知道什么意思
#9
就是比如我的客户端会在一个动作中,分为a,b,c三个需要进行数据库操作的动作,其中某些语句需要较长时间执行,那么这样的情况下,另一个客户端做了其他的动作,也需要访问数据库,这时候,那个客户端就没法做了。
可是市面上很多c/s结构的软件产品,也不可能都只能一个客户端访问吧?
可是市面上很多c/s结构的软件产品,也不可能都只能一个客户端访问吧?
#10
给你举个例子:
线程A有4个Client需要访问数据库,线程B有5个Client需要访问数据库。
你在线程A中创建一个DB Connection,这4个Client共享这个DBConnection。
同理,线程B中也创建一个DBConnection,这5个Client共享这个DBConnection。
这样,不管你怎么操作,都不会出问题。
当然,如果你想问N个Client访问同一条数据库记录时有逻辑上的混乱,则这是另外一个问题了,你可以去看看ado的相关文档。去看看“锁定类型”和“键值类型”。
线程A有4个Client需要访问数据库,线程B有5个Client需要访问数据库。
你在线程A中创建一个DB Connection,这4个Client共享这个DBConnection。
同理,线程B中也创建一个DBConnection,这5个Client共享这个DBConnection。
这样,不管你怎么操作,都不会出问题。
当然,如果你想问N个Client访问同一条数据库记录时有逻辑上的混乱,则这是另外一个问题了,你可以去看看ado的相关文档。去看看“锁定类型”和“键值类型”。
#11
同一个数据库可以同时做多个连接吗?如果可以最多可以做几个连接?
还有这种情况,就是像刚才说的,可能只是想显示某一个结果,但是这个结果可能由3条语句,做3次数据库操作才能完成,那么可能a客户端在做这个功能的时候,刚走到第一个语句,而b客户端刚好也开始进行计算,这种情况也有可能的呀。
#12
可以多连接。
好吧,我上面讲的都是安全问题,不是程序逻辑问题。
如果你是程序逻辑出了问题,得自己去研究代码。
对资源产生竞争时,可以加锁。
好吧,我上面讲的都是安全问题,不是程序逻辑问题。
如果你是程序逻辑出了问题,得自己去研究代码。
对资源产生竞争时,可以加锁。
#13
多连接通过什么来实现的?完成端口?
#14
在同一时刻内只能有一个线程访问你的数据库资源,其他线程如果连接的话处于等待状态。
#15
以下两种模式,可供参考:
1. 裸客户端模式。客户端直接调用比如ADO来访问数据库,这样就涉及到并发访问数据库的问题,数据库可支持多少个并发访问,各种版本的数据库不尽相同。
2. 客户端--后台服务器的C/S模式。通过建立socket连接的方式,处理客户端和服务器的数据交互。后台服务器在本地根据性能需要,创建一定的ADO连接,访问数据库,并返回结果给客户端。
1. 裸客户端模式。客户端直接调用比如ADO来访问数据库,这样就涉及到并发访问数据库的问题,数据库可支持多少个并发访问,各种版本的数据库不尽相同。
2. 客户端--后台服务器的C/S模式。通过建立socket连接的方式,处理客户端和服务器的数据交互。后台服务器在本地根据性能需要,创建一定的ADO连接,访问数据库,并返回结果给客户端。
#16
多客户端连接后台服务端,服务端查询结果返回客户端
#1
设置线程锁或是数据库锁,
对于访问同一个数据的话,之允许一个用户连接,其他设置等待~~~
对于访问同一个数据的话,之允许一个用户连接,其他设置等待~~~
#2
数据库本身会有读写锁等来保护...
#3
可是像很多c/s结构的软件,难道就是只能允许一个用户进行链接吗
#4
另外,如果有访问冲突的情况要怎么办?
#5
数据库自身会有控制,你不用担心
#6
补充一下,我的数据访问采用的vc/mfc+ado,理论上ado是可以支持远程数据库访问,
主要问题在于,当多个客户端同时访问数据库的时候会出现问题,如访问冲突之类。
主要问题在于,当多个客户端同时访问数据库的时候会出现问题,如访问冲突之类。
#7
1、MFC不是线程安全的;
2、ADO、OleDB等均不是线程安全的;
so, One Thread One DB Connection. Then you can do anything you want.
2、ADO、OleDB等均不是线程安全的;
so, One Thread One DB Connection. Then you can do anything you want.
#8
数据库都有冲突考虑,主要你说的冲突是什么样的冲突,你光说冲突谁能知道什么意思
#9
就是比如我的客户端会在一个动作中,分为a,b,c三个需要进行数据库操作的动作,其中某些语句需要较长时间执行,那么这样的情况下,另一个客户端做了其他的动作,也需要访问数据库,这时候,那个客户端就没法做了。
可是市面上很多c/s结构的软件产品,也不可能都只能一个客户端访问吧?
可是市面上很多c/s结构的软件产品,也不可能都只能一个客户端访问吧?
#10
给你举个例子:
线程A有4个Client需要访问数据库,线程B有5个Client需要访问数据库。
你在线程A中创建一个DB Connection,这4个Client共享这个DBConnection。
同理,线程B中也创建一个DBConnection,这5个Client共享这个DBConnection。
这样,不管你怎么操作,都不会出问题。
当然,如果你想问N个Client访问同一条数据库记录时有逻辑上的混乱,则这是另外一个问题了,你可以去看看ado的相关文档。去看看“锁定类型”和“键值类型”。
线程A有4个Client需要访问数据库,线程B有5个Client需要访问数据库。
你在线程A中创建一个DB Connection,这4个Client共享这个DBConnection。
同理,线程B中也创建一个DBConnection,这5个Client共享这个DBConnection。
这样,不管你怎么操作,都不会出问题。
当然,如果你想问N个Client访问同一条数据库记录时有逻辑上的混乱,则这是另外一个问题了,你可以去看看ado的相关文档。去看看“锁定类型”和“键值类型”。
#11
同一个数据库可以同时做多个连接吗?如果可以最多可以做几个连接?
还有这种情况,就是像刚才说的,可能只是想显示某一个结果,但是这个结果可能由3条语句,做3次数据库操作才能完成,那么可能a客户端在做这个功能的时候,刚走到第一个语句,而b客户端刚好也开始进行计算,这种情况也有可能的呀。
#12
可以多连接。
好吧,我上面讲的都是安全问题,不是程序逻辑问题。
如果你是程序逻辑出了问题,得自己去研究代码。
对资源产生竞争时,可以加锁。
好吧,我上面讲的都是安全问题,不是程序逻辑问题。
如果你是程序逻辑出了问题,得自己去研究代码。
对资源产生竞争时,可以加锁。
#13
多连接通过什么来实现的?完成端口?
#14
在同一时刻内只能有一个线程访问你的数据库资源,其他线程如果连接的话处于等待状态。
#15
以下两种模式,可供参考:
1. 裸客户端模式。客户端直接调用比如ADO来访问数据库,这样就涉及到并发访问数据库的问题,数据库可支持多少个并发访问,各种版本的数据库不尽相同。
2. 客户端--后台服务器的C/S模式。通过建立socket连接的方式,处理客户端和服务器的数据交互。后台服务器在本地根据性能需要,创建一定的ADO连接,访问数据库,并返回结果给客户端。
1. 裸客户端模式。客户端直接调用比如ADO来访问数据库,这样就涉及到并发访问数据库的问题,数据库可支持多少个并发访问,各种版本的数据库不尽相同。
2. 客户端--后台服务器的C/S模式。通过建立socket连接的方式,处理客户端和服务器的数据交互。后台服务器在本地根据性能需要,创建一定的ADO连接,访问数据库,并返回结果给客户端。
#16
多客户端连接后台服务端,服务端查询结果返回客户端