首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

遇到“无效的授权说明”这种异常有关问题的兄弟来一下! 已经找了大把贴子了,没有能解决的

2012-01-24 
遇到“无效的授权说明”这种错误问题的兄弟来一下! 已经找了大把贴子了,没有能解决的用vb连接sqlserver2000,

遇到“无效的授权说明”这种错误问题的兄弟来一下! 已经找了大把贴子了,没有能解决的
用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)

......

热点排行