sql连接问题,为什么客户端两个用户同时查询就不可以?

zixing 2008-11-26 10:36:08
'执行sql语句并返回adodb.recordset值
Public Function ExecuteSql(ByVal sql As String) As ADODB.Recordset
On Error GoTo Errormsg
Dim sqlcon As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
sqlcon.Provider = "sqloledb"
sqlcon.Properties("Data Source").Value = ServerDb '// SLMAIL 为SQL Server 服务器名
sqlcon.Properties("Initial Catalog").Value = Database '//已创建数据库名
sqlcon.Properties("persist security info").Value = "False"
sqlcon.Properties("user id").Value = SqlUserId
sqlcon.Properties("password").Value = SqlPassword
sqlcon.Open
cmd.ActiveConnection = sqlcon
cmd.CommandText = sql
Set ExecuteSql = cmd.Execute
'sqlcon.Close
If 1 <> 1 Then
Errormsg: MsgBox Error
End If
End Function

这个是我用的sql连接。为啥客户端2个人同时用就不行呢。必须一个人查询完毕。另外一个人才可以查询。。该怎么改一下?
...全文
111 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2008-11-26
  • 打赏
  • 举报
回复
Public Function ExecuteSql(ByVal sql As String) As ADODB.Recordset
On Error GoTo Errormsg
Dim sqlcon As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset

sqlcon.Provider = "sqloledb"
sqlcon.Properties("Data Source").Value = ServerDb '// SLMAIL 为SQL Server 服务器名
sqlcon.Properties("Initial Catalog").Value = Database '//已创建数据库名
sqlcon.Properties("persist security info").Value = "False"
sqlcon.Properties("user id").Value = SqlUserId
sqlcon.Properties("password").Value = SqlPassword
sqlcon.Open
cmd.ActiveConnection = sqlcon
cmd.CommandText = sql

set rs=cmd.Execute
Set ExecuteSql = rs
'应该加上
set rs=nothing
set cmd=nothing
set sqlcon=nothing
'sqlcon.Close
exit function
Errormsg: MsgBox Error
End If
End Function
vbman2003 2008-11-26
  • 打赏
  • 举报
回复
代码应该没有问题,不知道是不是你的用户权限问题?
zuoxingyu 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 Tiger_Zhao 的回复:]
在 sqlcon.Open 前面加一句 sqlcon.CursorLocation = adUseClient
[/Quote]

修改游标位置,和这个有关系吗??
Tiger_Zhao 2008-11-26
  • 打赏
  • 举报
回复
在 sqlcon.Open 前面加一句 sqlcon.CursorLocation = adUseClient
饮水需思源 2008-11-26
  • 打赏
  • 举报
回复
工程中定义一个全局的sqlcon,工程打开时连接数据库,在工程运行过程中都可以引用
zixing 2008-11-26
  • 打赏
  • 举报
回复
这个里面的可以吗?我的这个可以给我改一下吗?初学。不晓得那个怎么改。
alan001 2008-11-26
  • 打赏
  • 举报
回复
了解了解,up
Tiger_Zhao 2008-11-26
  • 打赏
  • 举报
回复
多用户冲突主要就是锁导致的,服务端游标比较容易产生锁定,所以先改游标。
如果不行,可能你用来数据绑定、或者对 RecordSet 进行了修改,那么需要设法缩短锁定时间,需要具体问题具体对待。
vbman2003 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zixing 的回复:]
这些到底哪个答案正确呀?是该加入
set rs=nothing
set cmd=nothing
set sqlcon=nothing
还是修改一下游标?
sqlcon.CursorLocation = adUseClient
[/Quote]

我觉得你的问题和代码关系不大,怀疑是用户权限问题....你是用数据库管理员ID访问数据库的吗?
aixin0871 2008-11-26
  • 打赏
  • 举报
回复
修改一下游标
zixing 2008-11-26
  • 打赏
  • 举报
回复
这些到底哪个答案正确呀?是该加入
set rs=nothing
set cmd=nothing
set sqlcon=nothing
还是修改一下游标?
sqlcon.CursorLocation = adUseClient

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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