这是不提供的参数化查询 [英] The parameterized query which was not supplied
问题描述
我不断收到此错误:
在参数化查询(@AdminEmail为nvarchar(4000),@ ADMINPASSWORD
为nvarchar(4000))SELECT'预计参数'@AdminEmail,这是
未提供。
块引用>code:
公共功能AuthenticateAdmin()为布尔
昏暗的成功作为布尔 函数创建一个字符串
创建失败= ConfigurationManager.ConnectionStrings(HMVDb)。的ToString
昏暗康恩作为新的SqlConnection(strConn.ToString()) 昏暗CMD作为新的SqlCommand(SELECT * FROM admin其中ADMINEMAIL = @ ADMINEMAIL AND ADMINPASSWORD = @ ADMINPASSWORD,康涅狄格州)
cmd.Parameters.AddWithValue(@ ADMINEMAIL,电子邮件)
cmd.Parameters.AddWithValue(@ ADMINPASSWORD,密码) 昏暗的DA作为新的SqlDataAdapter(CMD) 昏暗的DS作为新的数据集 conn.Open()
da.Fill(DS,管理)
conn.Close() 如果ds.Tables(管理)Rows.Count> 0,则 昏暗aemail作为字符串= ds.Tables(管理)。行(0).Item(ADMINEMAIL)
昏暗apass作为字符串= ds.Tables(管理)。行(0).Item(ADMINPASSWORD)
昏暗的援助作为整数= ds.Tables(管理)。行(0).Item(AdminID)
昏暗的aname的String = ds.Tables(管理)。行(0).Item(AdminName) 如果EMAIL = aemail和密码= apass然后
标识Ecader ID =援助购物者ID
名称= aname
成功=真正的'购物者进行身份验证
其他
成功=假身份验证失败
万一
万一
'返回验证结果,调用程序
返回成功
结束功能
解决方案您
@AdminEmail
变量电子邮件
为空。你可以不通过空
上必需的参数。使用DBNull.Value
。在使用,你会忽略参数
空
,你是通知SQL Server中。这可以是具有默认值的可选参数是有用的,但会导致错误的必需参数。我建议您使用始终传递值命令参数时使用效用函数。
例如:
公共静态对象GetDataValue(对象的值)
{
如果(价值== NULL)
{
返回DBNull.Value;
} 返回值;
},然后用
cmd.Parameters.AddWithValue(@ ADMINEMAIL,GetDataValue(电子邮件))
I keep getting this error :
The parameterized query '(@AdminEmail nvarchar(4000),@AdminPassword nvarchar(4000))SELECT' expects the parameter '@AdminEmail', which was not supplied.
Code:
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 AdminEmail=@AdminEmail AND Adminpassword=@Adminpassword", 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
解决方案Your
@AdminEmail
variablenull
on a required parameter. UseDBNull.Value
.When using
null
, you are informing Sql Server that you are omitting the parameter. This can be useful for an optional parameter with a default value, but causes an error for a required parameter.I recommend that you use always use a utility function when passing a value to a command parameter.
For example:
public static object GetDataValue(object value) { if(value == null) { return DBNull.Value; } return value; }
and then use
cmd.Parameters.AddWithValue("@AdminEmail", GetDataValue(EMail))
这篇关于这是不提供的参数化查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!