遇到“无效的授权说明”这种错误问题的兄弟来一下! 已经找了大把贴子了,没有能解决的
用vb连接sqlserver2000,用以下语句能正常访问:
cn.Open "Provider=SQLOLEDB;Data Source=localhost;User ID=sa;Password=ren;Initial Catalog=savesms;Persist Security Info=True "
现在公司要求服务器名、数据库名、登录用户和密码要从.ini文件中读取,现在读取ini文件里的变量没有问题,可连接语句改成下面的就有提示:无效的授权说明
cn.Open "Provider=SQLOLEDB;Data Source= " & tempserver1 & " ;User ID= " & tempusername1 & " ;Password= " & tempuserpassword1 & " ;Initial Catalog= " & tempdatabasename1 & " ;Persist Security Info=True "
更奇怪的是 tempserver1,tempusername1等4个变量的值都已经得到了,就是读出来了。还是不能正常执行这条sql语句,
一定非要把:
tempserver1 = "localhost "
tempusername1 = "sa "
tempuserpassword1 = "ren "
tempdatabasename1 = "savesms "
这样的赋值变量写上才能正常执行sql语句,晕,请高手们给个说法。
公司要求 不能把数据库都配置说明直接写入程序,要可以自己控制,所以要写在.ini文件中,求你们了。
[解决办法]
看看取的值是否正确,去掉字符结束符试试
[解决办法]
debug.print tempserver1 & "-- " & len(tempserver1) '= "localhost "
debug.print tempusername1 & "-- " & len(tempusername1) '= "sa "
debug.print tempuserpassword1 & "-- " & len(tempuserpassword1) '= "ren "
debug.print tempdatabasename1 & "-- " & len(tempdatabasename1) '= "savesms "
打印出结果再对比localhost...
[解决办法]
strConn= "Provider=SQLOLEDB;Data Source= " & tempserver1 & " ;User ID= " & tempusername1 & " ;Password= " & tempuserpassword1 & " ;Initial Catalog= " & tempdatabasename1 & " ;Persist Security Info=True "
debug.print strConn
然后自己看到底那里出了问题
[解决办法]
估计是从INI文件中读出的值不正确, 末尾有一个0号字符(vbNullChar)
把tempserver1、 tempusername1、tempuserpassword1、tempdatabasename1四个变量用下面的函数进行处理:
Public Function StringProcess(ByVal S As String) As String
Dim i As Long
i = InStr(S, vbNullChar)
If i > 0 Then
StringProcess = Left(S, i - 1)
Else
StringProcess = S
End If
End Function
......
tempserver1 = StringProcess(tempserver1)
tempusername1 = StringProcess(tempusername1)
tempuserpassword1 = StringProcess(tempuserpassword1)
tempdatabasename1 = StringProcess(tempdatabasename1)
......