vbscript с использованием переменных при подключении к базам данных

Я пытаюсь использовать переменные, чтобы сохранить мои имя пользователя и пароль для моей базы данных в защищенной паролем программе, передать их в качестве параметров, а затем использовать их в 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 = ""

Может кто-нибудь помочь мне понять, почему я не могу использовать переменные для подключения к базам данных?

1 ответ

Решение

VBScript не собирается сканировать строковый литерал на предмет имен переменных. Вы должны поместить их вне строкового литерала:

strConnect = "PROVIDER=sqloledb.1;Data Source=myDatabase;Initial Catalog=myGroup;User ID=" & Username & ";Password=" & Pswrd

В противном случае вы пытаетесь войти с буквальным именем пользователя &Username

Другие вопросы по тегам