В приведенном ниже примере кода вы видите, что я пытался разобраться с параметризованными запросами в ASP и MySQL.
Я здесь что-то делаю не так и хотел бы знать, что это такое. В моем примере вы можете увидеть два запроса. Если я пропущу последний запрос (под строкой '////////), этот скрипт работает. Как только я добавляю последний запрос, я получаю следующую ошибку:
"Многошаговая операция OLE DB вызвала ошибки. Проверьте каждую OLE DB
значение статуса, если доступно. Никакой работы сделано не было. "
Я действительно не уверен, что делаю неправильно. Я погуглил ошибку, и она что-то говорила о типах данных, но в моей пустой голове не было!
Объявляю ли я параметры (.createParameter) в нужном месте, так как я обрабатываю несколько запросов? Должны ли они быть объявлены перед всеми запросами?
Мой код
Set connContent = Server.CreateObject("ADODB.Connection")
connContent.ConnectionString="...blah..blah..blah..."
connContent.Open
Set cmdContent = Server.CreateObject("ADODB.Command")
Set cmdContent.ActiveConnection = connContent
cmdContent.Prepared = True
Const ad_varChar = 200
Const ad_ParamInput = 1
Const ad_Integer = 3
Const ad_DBDate = 133
Const ad_DBTimeStamp = 135
theNumber = 23
theText = "Hello there!"
theDate = "2011-10-15"
SQL = " INSERT INTO testTable (integerCol) VALUES (?); "
Set newParameter = cmdContent.CreateParameter("@theNumber", ad_Integer, ad_ParamInput, 50, theNumber)
cmdContent.Parameters.Append newParameter
cmdContent.CommandText = SQL
cmdContent.Execute
' ////////////
SQL = " INSERT INTO testTable (varCharCol) VALUES (?); "
Set newParameter = cmdContent.CreateParameter("@theText", ad_varChar, ad_ParamInput, 50, theText)
cmdContent.Parameters.Append newParameter
cmdContent.CommandText = SQL
cmdContent.Execute
UPDATE:
Я получил оба запроса, но мне пришлось установить другой объект команды и активное соединение, как показано ниже. Хотя это работает, правильно ли это делать с моим типом соединения? Должен ли я устанавливать для объекта команды ничего после каждого запроса?
' ////////////
Set cmdContent = Server.CreateObject("ADODB.Command")
Set cmdContent.ActiveConnection = connContent
SQL = " INSERT INTO testTable (varCharCol) VALUES (?); "
Set newParameter = cmdContent.CreateParameter("@theText", ad_varChar, ad_ParamInput, 50, theText)
cmdContent.Parameters.Append newParameter
cmdContent.CommandText = SQL
cmdContent.Execute