Параметрированный запрос, который не был предоставлен
Я продолжаю получать эту ошибку:
Параметрированный запрос '(@AdminEmail nvarchar (4000), @AdminPassword nvarchar (4000)) SELECT 'ожидает параметр' @AdminEmail ', который был не прилагается.
код:
Public Function AuthenticateAdmin() As Boolean
Dim Success As Boolean
Dim strConn As String
strConn = ConfigurationManager.ConnectionStrings("HMVDb").ToString
Dim conn As New SqlConnection(strConn.ToString())
Dim cmd As New SqlCommand("SELECT * FROM Admin WHERE [email protected] AND [email protected]", conn)
cmd.Parameters.AddWithValue("@AdminEmail", EMail)
cmd.Parameters.AddWithValue("@AdminPassword", Password)
Dim da As New SqlDataAdapter(cmd)
Dim ds As New DataSet
conn.Open()
da.Fill(ds, "Admin")
conn.Close()
If ds.Tables("Admin").Rows.Count > 0 Then
Dim aemail As String = ds.Tables("Admin").Rows(0).Item("AdminEmail")
Dim apass As String = ds.Tables("Admin").Rows(0).Item("AdminPassword")
Dim aid As Integer = ds.Tables("Admin").Rows(0).Item("AdminID")
Dim aname As String = ds.Tables("Admin").Rows(0).Item("AdminName")
If EMail = aemail And Password = apass Then
ID = aid ' Shopper ID that identify Ecader
Name = aname
Success = True 'Shopper is authenticated
Else
Success = False 'Authentication fail
End If
End If
'Return the authentication result to calling program
Return Success
End Function
Ответы
Ответ 1
Ваша переменная @AdminEmail
EMail
имеет значение null. Вы не можете передать null
по требуемому параметру. Используйте DBNull.Value
.
При использовании null
вы сообщаете Sql Server, что вы опускаете параметр. Это может быть полезно для необязательного параметра со значением по умолчанию, но вызывает ошибку для требуемого параметра.
Я рекомендую вам всегда использовать функцию утилиты при передаче значения параметру команды.
Например:
public static object GetDataValue(object value)
{
if(value == null)
{
return DBNull.Value;
}
return value;
}
а затем используйте
cmd.Parameters.AddWithValue("@AdminEmail", GetDataValue(EMail))
Ответ 2
Возможно ли, что свойство EMail равно null (Email is Nothing)? Я думаю, вы можете получить эту ошибку в этом случае. Перед установкой значения параметра убедитесь, что EMail = String.Empty или EMail = "".
Изменить. Или, как предлагает другой ответ, вы можете отправить DBNull.Value вместо этого, если вы действительно хотите иметь нули в своей базе данных.
Ответ 3
Пройдите свой код и посмотрите, что такое значения Email
и Password
. Скорее всего, они равны нулю.