我在尝试加载页面时遇到此错误。错误以粗体突出显示。
string strConnectionString = "...";
SqlConnection myConnect = new SqlConnection(strConnectionString);
string strCommandText = "SELECT NRIC,Email,FirstName,LastName FROM Customer WHERE NRIC=@nric";
SqlCommand cmd = new SqlCommand(strCommandText, myConnect);
cmd.Parameters.Add("@nric", SqlDbType.NVarChar, 100);
cmd.Parameters["@nric"].Value = (String)Session["CustomerNRIC"];
myConnect.Open();
SqlDataReader reader = cmd.ExecuteReader();
错误消息是:
参数化查询'(@ nric nvarchar(100))SELECT NRIC,Email,FirstName,LastName FROM C'需要参数'@nric',这是未提供的。描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:System.Data.SqlClient.SqlException:参数化查询'(@ nric nvarchar(100))SELECT NRIC,Email,FirstName,LastName FROM C'需要参数'@nric',这是未提供的。
我的客户表
GuestID nvarchar(max)NRIC nvarchar(50) FirstName nvarchar(50)LastName nvarchar(50) GuestAddress nvarchar(50)GuestTelephone nvarchar(50)DOB nvarchar(50)性别nvarchar(50)电子邮件
为nvarchar(50)
答案 0 :(得分:2)
我认为@nric
的价值是null
。在这种情况下,参数是“未指定”。如果null
是您查询中的有效值,请使用DBNull.Value
。
cmd.Parameters.Add("@nric", SqlDbType.NVarChar, 100);
if (string.IsNullOrEmpty((string)Session["CustomerNRIC"]))
{
cmd.Parameters["@nric"].Value = DBNull.Value;
}
else
{
cmd.Parameters["@nric"].Value = Session["CustomerNRIC"];
}