Параметрированный запрос, который не был предоставлен

Я продолжаю получать эту ошибку:

Параметрированный запрос '(@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 

Ваша переменная @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)) 

Возможно ли, что свойство EMail равно null (Email is Nothing)? Я думаю, вы можете получить эту ошибку в этом случае. Перед установкой значения параметра убедитесь, что EMail = String.Empty или EMail = "".

Изменить. Или, как предлагает другой ответ, вы можете отправить DBNull.Value, если вы действительно хотите, чтобы в вашей базе данных были нули.

Пройдите через свой код и посмотрите, что такое значение Email и Password . Скорее всего, они равны нулю.

  • Visual Studio и SQL Server - правильная последовательность установки?
  • Visual Studio 2008 - невозможно подключить данные к SQL Server в разных подсетях
  • как изменить шрифты в дизайнере BIDS?
  • Попытка выполнить иерархическое обновление приводит к ошибке «Значение внешнего ключа не может быть вставлено»
  • Что создало этот код доступа к базе данных?
  • Ошибка в Visual Studio 2008 с проектами отчетов SSRS 2005
  • как использовать параметр .rdlc в запросе отчета?
  • Server Explorer недоступен (VS2008Pro)
  • Безопасно ли удалять SQL Server 2005 Express, установленную Visual Studio 2008 при установке SQL Server 2008?
  • Отчет SSRS для отображения календаря типа Outlook - People x Days x Activities
  • выполнение нескольких SQL-скриптов, закодированных в UTF-8
  • Давайте будем гением компьютера.