Sale存储过程如下:
CREATE PROCEDURE Sale
@ID varchar(50),
@Name varchar(50)
AS
select * from tUsersIndex
WHERE
fUserID = @ID
AND fUserName = @Name
GO原程序如下:
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Sale";//存储过程名SqlDataAdapter adapter = new SqlDataAdapter(cmd);
this.txtID.Text = cmd.Parameters["@ID"].Value.ToString();//传递参数
this.txtName.Text = cmd.Parameters["@Name"].Value.ToString();//adapter.SelectCommand = cmd;
cmd.ExecuteNonQuery(); DataTable dt = new DataTable();
adapter.Fill(dt);if(dt.Rows.Count>0)
{
string str2 = dt.Rows[0]["fUserEmail"].ToString();
Response.Write(str2);//输出查看
}
con.Close();
执行程序时出现错误:异常详细信息: System.IndexOutOfRangeException: 此 SqlParameterCollection 中未包含带有 ParameterName“@ID”的 SqlParameter。
请大家帮忙看看!谢谢!!
CREATE PROCEDURE Sale
@ID varchar(50),
@Name varchar(50)
AS
select * from tUsersIndex
WHERE
fUserID = @ID
AND fUserName = @Name
GO原程序如下:
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Sale";//存储过程名SqlDataAdapter adapter = new SqlDataAdapter(cmd);
this.txtID.Text = cmd.Parameters["@ID"].Value.ToString();//传递参数
this.txtName.Text = cmd.Parameters["@Name"].Value.ToString();//adapter.SelectCommand = cmd;
cmd.ExecuteNonQuery(); DataTable dt = new DataTable();
adapter.Fill(dt);if(dt.Rows.Count>0)
{
string str2 = dt.Rows[0]["fUserEmail"].ToString();
Response.Write(str2);//输出查看
}
con.Close();
执行程序时出现错误:异常详细信息: System.IndexOutOfRangeException: 此 SqlParameterCollection 中未包含带有 ParameterName“@ID”的 SqlParameter。
请大家帮忙看看!谢谢!!
this.txtName.Text = cmd.Parameters["@Name"].Value.ToString();//这就是赋值啊 !!
this.txtID.Text和this.txtName.Text这两个值赋给@ID和@Name的啊为什么不行呢???
cmd.Parameters["@ID"].Value=this.txtID.Text
cmd.Parameters["@Name"].Value=this.txtName.Text
而且你还缺少加入参数的语句
cmd.Parameters.Add方法
cmd.Parameters.Add("@Name",值);
添加参数应该这样加:
cmd.Parameters.Add("@ID",SqlDbType.NChar);//加入名为@ID类型为SqlDbType.NChar的参数。
cmd.Parameters.Add("@Name",SqlDbType.NChar);//
然后再
cmd.Parameters["@ID"].Value = this.textID.Text;
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Sale";//存储过程名SqlDataAdapter adapter = new SqlDataAdapter(cmd);
cmd.Parameters.Add("@ID",SqlDbType.NVarChar);
cmd.Parameters.Add("@Name",SqlDbType.NVarChar);cmd.Parameters["@ID"].Value = this.txtID.Text;//传递参数
cmd.Parameters["@Name"].Value = this.txtName.Text;//adapter.SelectCommand = cmd;
cmd.ExecuteNonQuery(); DataTable dt = new DataTable();
adapter.Fill(dt);if(dt.Rows.Count>0)
{
string str2 = dt.Rows[0]["fUserEmail"].ToString();
Response.Write(str2);//输出查看
}con.Close();
但是还是报错:
异常详细信息: System.InvalidOperationException: ExecuteReader: Connection 属性尚未初始化。
可以在构造函数里添加:SqlCommand cmd = new SqlCommand("Sale",con);
也可以cmd构造好后:cmd.Connection = con;