【发布时间】:2014-02-02 10:05:33
【问题描述】:
仅在尝试加载页面时出现此错误。错误以粗体突出显示。
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) 名字 nvarchar(50) 姓氏 nvarchar(50) GuestAddress nvarchar(50) GuestTelephone nvarchar(50) DOB nvarchar(50) 性别 nvarchar(50) 电子邮件
nvarchar(50)
【问题讨论】:
-
为什么这么多代码?仅发布相关端口。甚至 marc 也无法格式化所有代码
-
你真的应该把你的代码缩小到实际的问题行 + / - 5。
-
参数化查询 '(@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',但未提供。
-
第 37 行:myConnect.Open();第 38 行:第 39 行:SqlDataReader reader = cmd.ExecuteReader();第 40 行:第 41 行:if (reader.Read())
-
正如@Patrick Hofman 所说,缩小您的代码并仅发布相关行,这样可以节省资源,也便于其他人使用