错误提示:此 SqlParameterCollection 中未包含带有 ParameterName“result”的 SqlParameter。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.IndexOutOfRangeException: 此 SqlParameterCollection 中未包含带有 ParameterName“result”的 SqlParameter。
源错误:
private void Button1_Click(object sender, System.EventArgs e)
{string procedurename="user_usernameanduseremail_check_procedure";
SqlConnection myConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionSqlServer"]);
SqlCommand mysqlcommand = new SqlCommand(procedurename,myConnection);
mysqlcommand.CommandType = CommandType.StoredProcedure;
SqlParameter mysqlparameter;
mysqlparameter = mysqlcommand.Parameters.Add("@username", SqlDbType.Char, 15);
mysqlparameter.Direction = ParameterDirection.Input;
mysqlcommand.Parameters["@username"].Value=userID.Text;
mysqlparameter = mysqlcommand.Parameters.Add("@useremail", SqlDbType.VarChar, 50);
mysqlparameter.Direction = ParameterDirection.Input;
mysqlcommand.Parameters["@useremail"].Value=useremail.Text;
mysqlparameter = mysqlcommand.Parameters.Add("@result", SqlDbType.Int,4);
mysqlparameter.Direction = ParameterDirection.Output;
try
{
myConnection.Open();
mysqlcommand.ExecuteNonQuery();
int intresult;
intresult=(int)mysqlcommand.Parameters["result"].Value;
if (intresult==-1)
{
string themessage = "你输入的用户名或者电子邮箱已经存在 请改变输入!";
message.Text=themessage;
}
myConnection.Close();
}
catch
{
e.ToString();
}
}
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.IndexOutOfRangeException: 此 SqlParameterCollection 中未包含带有 ParameterName“result”的 SqlParameter。
源错误:
private void Button1_Click(object sender, System.EventArgs e)
{string procedurename="user_usernameanduseremail_check_procedure";
SqlConnection myConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionSqlServer"]);
SqlCommand mysqlcommand = new SqlCommand(procedurename,myConnection);
mysqlcommand.CommandType = CommandType.StoredProcedure;
SqlParameter mysqlparameter;
mysqlparameter = mysqlcommand.Parameters.Add("@username", SqlDbType.Char, 15);
mysqlparameter.Direction = ParameterDirection.Input;
mysqlcommand.Parameters["@username"].Value=userID.Text;
mysqlparameter = mysqlcommand.Parameters.Add("@useremail", SqlDbType.VarChar, 50);
mysqlparameter.Direction = ParameterDirection.Input;
mysqlcommand.Parameters["@useremail"].Value=useremail.Text;
mysqlparameter = mysqlcommand.Parameters.Add("@result", SqlDbType.Int,4);
mysqlparameter.Direction = ParameterDirection.Output;
try
{
myConnection.Open();
mysqlcommand.ExecuteNonQuery();
int intresult;
intresult=(int)mysqlcommand.Parameters["result"].Value;
if (intresult==-1)
{
string themessage = "你输入的用户名或者电子邮箱已经存在 请改变输入!";
message.Text=themessage;
}
myConnection.Close();
}
catch
{
e.ToString();
}
}
解决方案 »
- 在用ASP.NET做网页进行导出数据时
- 调用handler出现404错误
- 关于 windows 身份验证模式下 数据库连接 地址字符串是怎么弄的?
- 在 <script type="text/jscript"> </script> 怎么取得DataGrid控件选择的行的ID,已经绑定DataKeyField="ID"
- 问题没解决!另开帖子!希望慕白 gui0605(学问之美..)帮我再解决下!谢谢了!
- 抓取Excel 列数据的时候,为何抓的数据不对
- ASP.NET WEB站点高级编程?
- TreeView使用求助
- 请教javascript调用c#过程的方法
- 神来救救我吧!!100分,很简单的!Request.Form["Name"]为什么把中文过滤掉了?
- 求个触发器
- datagrid能作到这种效果吗?
@username char(15),
@useremail varchar(50),
@result integer output as
begin
select username,useremail from user_info where useremail=@useremail and username=@username
if @@ROWCOUNT<>0
select @result=-1
return @result
end
GO
改成
intresult=(int)mysqlcommand.Parameters["@result"].Value;
行了:最重要的一点是:你有一行代码写错了(是你大意了):
mysqlparameter = mysqlcommand.Parameters.Add("@result", SqlDbType.Int,4);
mysqlparameter.Direction = ParameterDirection.Output;
你上面这两行代码,把指定的输出参数就不是一个参数.换句话说就是参数"@result"还是输入参数可是存储过程里有吗?(你自己去看看)mysqlparameter = mysqlcommand.Parameters.Add("@result", SqlDbType.Int,4);
mysqlparameter["@result"].Direction = ParameterDirection.Output;
这两行才把一个参数指定为输出参数.
错误原因:
因为代码调用存储过程的时候,而存储过程里就没有@result的输入参数,所以会报告"未包含带有 ParameterName“result”的 SqlParameter"
string themessage = "你输入的用户名或者电子邮箱已经存在 请改变输入!";
message.Text=themessage;
这个信息不能通过label 显示出来 为什么?
string themessage = "你输入的用户名或者电子邮箱已经存在 请改变输入!";
message.Text=themessage;
这个信息不能通过label 显示出来 为什么?