VB与数据库连接不能放在模块中,请大家帮下忙,谢谢

hmyang 2006-03-09 12:04:39
rivate Sub cmdOK_Click()
'注册新用户

Dim cnn1 As ADODB.Connection
Dim AddUser As New ADODB.Recordset
Dim SqlStr As String
Dim DBstr As String
Dim UsrName As String
Dim UsrPwd As String
Dim strCnn As String

'与数据库连接
Set cnn1 = New ADODB.Connection
strCnn = "Provider = SQLOLEDB; Data Source = localhost ;User ID = sa; & _
Initial catalog = wastebook ;Password = ;"
cnn1.Open strCnn

'与表连接
Set AddUser = New ADODB.Recordset
AddUser.CursorType = adOpenKeyset
AddUser.LockType = adLockOptimistic
×× AddUser.Open "UserInfo", cnn1, adOpenForwardOnly, adLockOptimistic
End Sub
以上代码通过,于是我新建了一个模块,并Public g_Conn As ADODB.Connection 把g_Conn设为全局变量,在模块中
'建立连接
Set g_Conn = New ADODB.Connection
strCnn = "Provider = SQLOLEDB; Data Source = ServerName ;User ID = UserName;" & _
"Initial catalog = DBName ;Password = UserPwd; "
g_Conn.Open strCnn
而把上面与数据库的连接代码去掉,运行就会报错“连接无法用于执行此操作。在此上下文中它可能已经被关闭或无效。错误的是带××的那行,请大家帮忙,谢谢:)
...全文
210 30 点赞 打赏 收藏 举报
写回复
30 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
boblaile 2006-03-10
cnn1 .close
是不是没有关闭连接
以后的连接就出错了
  • 打赏
  • 举报
回复
做鸡真好吃 2006-03-10
Public g_Conn As new ADODB.Connection
'Set g_Conn = New ADODB.Connection '不要这句
strCnn = "Provider = SQLOLEDB; Data Source = ServerName ;User ID = UserName;" & _
"Initial catalog = DBName ;Password = UserPwd; "
g_Conn.Open strCnn
  • 打赏
  • 举报
回复
mccartney_xu 2006-03-10
是不是因为你NEW了两次啊?!
  • 打赏
  • 举报
回复
bbbbcccc 2006-03-10
http://valenhua.go3.icpcn.com/
  • 打赏
  • 举报
回复
hmyang 2006-03-09
好了,真是太谢谢了:)
  • 打赏
  • 举报
回复
hmyang 2006-03-09
发好了,谢谢
  • 打赏
  • 举报
回复
hmyang 2006-03-09
好的,谢谢,实在是麻烦你了,稍等
  • 打赏
  • 举报
回复
Cooly 2006-03-09
&是字符串连接符, 这样吧,你把工程文件打包发给我一份,我帮你看看.

johnnylill@126.com
  • 打赏
  • 举报
回复
hmyang 2006-03-09
&这个符号在这里的作用是?。。。
好像还是不行
  • 打赏
  • 举报
回复
Cooly 2006-03-09
你的strCnn组成不正确,ServerName, UserName, DBName, UserPwd 这四个都是变量,需要用上面那种方式连接才可以。
  • 打赏
  • 举报
回复
Cooly 2006-03-09
.....

strCnn = "Provider = SQLOLEDB; Data Source = " & ServerName & ";User ID = " & UserName & ";Initial catalog = " & DBName & ";Password = " & UserPwd & ";"
  • 打赏
  • 举报
回复
hmyang 2006-03-09
Dim ServerName As String, DBName As String, UserName As String, UserPwd As String
Dim strCnn As String

'数据库相关信息
ServerName = "localhost"
DBName = "wastebook"
UserName = "sa"
UserPwd = " "
这是我定义的。
用你前面的办法试了一下,改成从sub main开始运行,不过VB就没有响应了,我导出成exe文件,运行等了一会儿然后跳出来错误信息“运行时错误,【DBNETLIB】connectionOpen(connect())】SQL Server不存在或拒绝访问
  • 打赏
  • 举报
回复
Cooly 2006-03-09
你的strCnn有问题
strCnn = "Provider = SQLOLEDB; Data Source = ServerName ;User ID = UserName;" & _
"Initial catalog = DBName ;Password = UserPwd; "
........ServerName, UserName, DBName, UserPwd ??


用这句
strCnn = "Provider = SQLOLEDB; Data Source = localhost ;User ID = sa; & _
Initial catalog = wastebook ;Password = ;"

  • 打赏
  • 举报
回复
Cooly 2006-03-09
你在模块中添加以下代码
Dim g_Conn As ADODB.Connection

Sub Main()
Set g_Conn = New ADODB.Connection
strCnn = "Provider = SQLOLEDB; Data Source = ServerName ;User ID = UserName;" & _
"Initial catalog = DBName ;Password = UserPwd; "
g_Conn.Open strCnn
End Sub

然后修改工程属性,将开始对象设定为 Main()
  • 打赏
  • 举报
回复
hmyang 2006-03-09
哦,我也这么想,不过还是不行,我要晕了:(
今天才接触ADO,来了个下马威
  • 打赏
  • 举报
回复
hmyang 2006-03-09
我觉得g_Conn才是连接对象啊?而且设为全局可以让其它地方都用
strCnn是一个string,用来存储与数据库的连接方式,用户名,密码等信息
而且strCnn并不是全局的,只在模块中定义过,那FORM中怎么使用它呢?
  • 打赏
  • 举报
回复
Cooly 2006-03-09
很久没写代码了...唉.
  • 打赏
  • 举报
回复
Cooly 2006-03-09
不好意思,刚才看错了.

应该是这样
AddUser.Open "UserInfo", g_Conn, adOpenForwardOnly, adLockOptimistic
  • 打赏
  • 举报
回复
Cooly 2006-03-09
sorry,没看清楚
你的Connection对象名是g_Conn
  • 打赏
  • 举报
回复
Cooly 2006-03-09
对,这个是你打开的连接对象名称.
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖

1188

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2006-03-09 12:04
社区公告
暂无公告