VBA中连SQL SERVER连接串正确,执行打开也不报错,但是返回的状态却是0(关闭)
Dim CNN2 As New ADODB.Connection
Dim CNN_cmd As New ADODB.Command
Dim pthStr_tempdb As String '因存储过程在 tempdb 所以要与之联系
If CNN2.State = adStateClosed Then
pthStr_tempdb = "Provider=SQLOLEDB.1;server=ICA0006\SQLEXPRES;user id =sa;password=qlzhang123;database=tempdb"
CNN2.Open pthStr_tempdb ‘ 这句没有报错,是否代表我已经打开了呢?
MsgBox (CNN2.State) '对话框却显示cnn的连接状态为0,也就是关闭状态
End If
‘程序一直继续执行,无错误
Set CNN_cmd.ActiveConnection = CNN2 '指示指定的 Command对象当前所属的 Connection对象。
CNN_cmd.CommandText = "Pro_GG_CD1" '设置Command对象源。"Pro_GG_CD1"
CNN_cmd.CommandType = adCmdStoredProc 'adCmdStoredProc 存储过程
Set Rst_back = CNN_cmd.Execute
执行到这里也没有报错,然后正常终了
但是没有取得数据库中值。实际上我在SQL SERVER 2005 EXPRESS 单独执行存储过程时,是有数据的。
[解决办法]
数据库编程没怎么做过。。。偶很菜,但是感觉起码要给点分吧,要不都没哟回答问题的动力
[解决办法]
把错误处理屏蔽掉,单步调试看看。
[解决办法]
把错误处理屏蔽掉,单步调试看看。
并检查连接字符串
[解决办法]
CNN2.Open pthStr_tempdb[,][,]后面还有参数的,你应该选择这些参数的.
[解决办法]
Dim cn As New ADODB.Connection
Dim rs As new ADODB.Recordset ‘我比较熟悉recordset,个人感觉recordset比command好用
dim strsql as string
CNN2.ConnectionString = "Provider=SQLOLEDB.1;server=ICA0006\SQLEXPRES;user id =sa;password=qlzhang123;database=tempdb"
CNN2.Open
strsql=sql语句
rs.CursorLocation = adUseClient ’假如要绑定datagrid就要设游标了,不设游标recordset声明时不需要new关键字
rs.Open strsql, cn, adOpenDynamic, adLockOptimistic
Set rs.ActiveConnection=nothing ‘关闭数据库连接
cn.close
set datagrid1.datasource=rs ’rs关闭连接后,rs相当于内存中的一个数组。用起来很方便