用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文件中,求你们了。
tempserver1 = "localhost"
tempusername1 = "sa"
tempuserpassword1 = "ren"
tempdatabasename1 = "savesms"
这样的赋值变量写上才能正常执行sql语句,晕,请高手们给个说法。
公司要求 不能把数据库都配置说明直接写入程序,要可以自己控制,所以要写在.ini文件中,求你们了。
解决方案 »
- access+udp问题,请大家多多指教!!!!谢谢!!1在线等.
- VB向注册表写入或读取的字符串被截断,这是为何?
- 注册表问题
- Visual Basic真是搞笑
- 如何在菜单子菜单前加上图标????????
- 求救,在线等待,如何用SendMessage给另一个程序的ListBox加入一行文字
- 关于StretchBlt函数绘图失真的问题
- 创业中的公司招聘
- /**高手们谈谈如何更有效的团队开发vb数据库程序**/
- sos! 救命啊~~~!!!救命啊~~~!!!救命啊~~~!!!救命啊~~~!!!救命啊~~~!!!
- 遇到“无效的授权说明”这种错误问题的兄弟来一下! 已经找了大把贴子了,没有能解决的
- 【问】如何去掉写入网页源码时出现‘该网页包含潜在的安全缺陷’的对话框?
你把:
tempserver1 = "localhost"
tempusername1 = "sa"
tempuserpassword1 = "ren"
tempdatabasename1 = "savesms"
都放入ini文件中,定义好4个变量后,读取ini不就行了吗?至于你说的
//更奇怪的是 tempserver1,tempusername1等4个变量的值都已经得到了,就是读出来了。还是不能正常执行这条sql语句,我估计是字串处理的有问题
Dim getusername As Long
Dim getuserpassword As Long
Dim getserver As Long
Dim getdatabasename As LongDim tempusername As String * 50
Dim tempuserpassword As String * 50
Dim tempserver As String * 50
Dim tempdatabasename As String * 50
Dim susername As String, suserpassword As String, sserver As String, sdatabasename As String
'--------------读配置文件 iniFile = App.Path & "\config.ini"lpAppName = "Data" '主题键sserver = "server"
sdatabasename = "databasename"
susername = "username"
suserpassword = "userpassword"
lpDefault = 0
lpFileName = Filegetserver = GetPrivateProfileString(lpAppName, sserver, lpDefault, tempserver, Len(tempserver), lpFileName)
getdatabasename = GetPrivateProfileString(lpAppName, sdatabasename, lpDefault, tempdatabasename, Len(tempserver), lpFileName)
getusername = GetPrivateProfileString(lpAppName, susername, lpDefault, tempusername, Len(tempserver), lpFileName)
getuserpassword = GetPrivateProfileString(lpAppName, suserpassword, lpDefault, tempuserpassword, Len(tempserver), lpFileName)
... '实例化Connection对象
Set cn = New ADODB.Connection
cn.CursorLocation = adUseClient cn.Open "Provider=SQLOLEDB;Data Source=" & Trim(tempserver) & ";User ID=" & Trim(tempusername) & ";Password=" & Trim(tempuserpassword) & ";Initial Catalog= " & Trim(tempdatabasename) & ";Persist Security Info=True"
在你的程序中,先定义了:
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)结尾去掉就行