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

遇到“无效的授权说明”这种异常有关问题的兄弟来一下

2012-04-03 
遇到“无效的授权说明”这种错误问题的兄弟来一下!用vb连接sqlserver2000,用以下语句能正常访问:cn.OpenPro

遇到“无效的授权说明”这种错误问题的兄弟来一下!
用vb连接sqlserver2000,用以下语句能正常访问:

cn.Open   "Provider=SQLOLEDB;Data   Source=localhost;User   ID=savesms;Password=savesms;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文件中,求你们了。

[解决办法]
估计是trim之类的问题,最简单的:

s= "Provider=SQLOLEDB;Data Source= " & tempserver1 & " ;User ID= " & tempusername1 & " ;Password= " & tempuserpassword1 & " ;Initial Catalog= " & tempdatabasename1 & " ;Persist Security Info=True "

debug.print s= "Provider=SQLOLEDB;Data Source=localhost;User ID=savesms;Password=savesms;Initial Catalog=savesms;Persist Security Info=True "
[解决办法]
果然,问题就出在ini文件的读取上,我以tempusername变量为例说明一下,其余的你类似修改:
在你的程序中,先定义了:
Dim tempusername As String * 50
这样是没有问题的
然后,取出数据到缓冲区:
getusername = GetPrivateProfileString(lpAppName, susername, lpDefault, tempusername, Len(tempserver), lpFileName)
这个也是没问题的(不过,最好把Len(tempserver)改为Len(tempusername),这是个习惯问题)

问题在于,取出字串后tempusername除了包含正常的数据( "sa ")外,其结尾还有一连串的chr(0),也就是说,尽管看起来用msgbox 或debug.print输出的字串显示为 "sa ",但实际上,他们并不相等(可以用MsgBox tempusername = "sa "看看是否返回true)
解决办法:
dim s as string
s = Left(tempusername, InStr(1, tempusername, Chr(0)) - 1)
或者
s=left(tempusername,getusername)
或者
s = Replace(tempusername, Chr(0), " ")
总之,不管用什么办法,把字串结尾的chr(0)结尾去掉就行

热点排行