我正在尝试使用变量将我的数据库的用户名和密码存储在受密码保护的程序中,将它们作为参数传递,然后在VBScript中将它们用作将信息发送到数据库的参数。这将阻止用户查看保护数据库的用户名和密码,并允许他们篡改数据库。
当我在VBScript中拥有用户名和密码时,它可以正常工作。
strConnect = "PROVIDER=sqloledb.1;Data Source=myDatabase;Initial Catalog=myGroup;User ID=JoeSmith;Password=twinkles324"
但是,当我将它们作为参数发送到VBScript时,接受它们作为参数,并尝试连接,我收到80040E4D错误,指出“用户'登录失败'用户名'。”
Dim Arg, conn, strConnect, Data1, Data2, Data3, Data4
Set Arg = WScript.Arguments
Username = Arg.Item(0)
Pswrd = Arg.Item(1)
Set conn = CreateObject("ADODB.Connection")
strConnect = "PROVIDER=sqloledb.1;Data Source=myDatabase;Initial Catalog=myGroup;User ID=Username;Password=Pswrd"
conn.Open strConnect
strSQL = "INSERT INTO MyTable (Data1, Data2, Data3, Data4)" VALUES ('" & Data1 & "', '" & Data2 & "', '" & Data3 & "', '" & Data4 & "')
conn.Execute strSQL
conn.Close
strSQL = ""
任何人都可以帮我弄清楚为什么我无法使用变量来连接数据库吗?
答案 0 :(得分:1)
VBScript不会为变量名扫描字符串文字。你必须将它们放在字符串文字之外:
strConnect = "PROVIDER=sqloledb.1;Data Source=myDatabase;Initial Catalog=myGroup;User ID=" & Username & ";Password=" & Pswrd
否则您尝试使用文字用户名&Username