Многоэтапная операция OLE DB вызвала ошибки с параметризованными запросами - PullRequest
1 голос
/ 21 ноября 2011
sqlCmd.CommandText = "SELECT clientID, clientPassword" & _
                     " FROM Clients" & _
                     " WHERE (clientPassword=?)"
Set param = sqlCmd.CreateParameter("@clientPassword", 200, 1, Len(pass), pass)
sqlCmd.Parameters.Append param

Set rsUsers = sqlCmd.Execute

Этот запрос выполняется нормально, но когда я потом пытаюсь выполнить почти идентичный запрос ...

sqlCmd.CommandText = "SELECT clientID, clientUsername, clientPassword" & _
                     " FROM Clients" & _
                     " WHERE (clientEmail=?)"
Set param = sqlCmd.CreateParameter("@clientEmail", 200, 1, Len(email), email)
sqlCmd.Parameters.Append param

Set rsUsers = sqlCmd.Execute

Я получаю эту ошибку,

Многошаговый OLEРабота БД вызвала ошибки.Проверьте каждое значение состояния OLE DB, если оно доступно.Никакой работы сделано не было.

Оба столбца имеют длину nvarchar, 255 и 50.

Большинство моих поисков в Google говорят, что это ошибка типа данных, но я только получаю значения и2-й запрос работает нормально, если выполняется сам по себе.Ошибка возникает, только если я запускаю более одного запроса.

Пожалуйста, и спасибо.

Спасибо, Эдуардо, что без проблем проходит через мои запросы, но мой запрос ОБНОВЛЕНИЯ ничего не делает.

sqlCmd.CommandText = "UPDATE Clients" & _ 
                     " SET clientUsername=?, clientPassword=?" & _ 
                     " WHERE (clientEmail=?)" 
Set param = sqlCmd.CreateParameter("@clientEmail", 200, 1, Len(email), email)    
sqlCmd.Parameters.Append param 
Set param = sqlCmd.CreateParameter("@clientUsername", 200, 1, Len(user), user)
sqlCmd.Parameters.Append param 
Set param = sqlCmd.CreateParameter("@clientPassword", 200, 1, Len(pass), pass)    
sqlCmd.Parameters.Append param 
Set rsUsers = sqlCmd.Execute 

Есть идеи, почему?Я застрял на этой части кода в течение нескольких дней.

1 Ответ

2 голосов
/ 21 ноября 2011

Реинициализируется ли переменная sqlCmd?

Я думаю, что вы пропали без вести

Set sqlCmd = server.createobject("ADODB.Command")

После запуска второго

Редактировать после редактирования
Порядок имеет значение, поэтому вам нужно добавить параметры в том же порядке, в котором вы их используете в запросе

Set param = sqlCmd.CreateParameter("@clientUsername", 200, 1, Len(user), user)
sqlCmd.Parameters.Append param 
Set param = sqlCmd.CreateParameter("@clientPassword", 200, 1, Len(pass), pass)    
sqlCmd.Parameters.Append param 
Set param = sqlCmd.CreateParameter("@clientEmail", 200, 1, Len(email), email)    
sqlCmd.Parameters.Append param     
Set rsUsers = sqlCmd.Execute 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...