我用SqlDataReader
做了sql命令,但我遇到了这个错误
System.IndexOutOfRangeException:UserName
页面加载事件:
protected void Page_Load(object sender, EventArgs e)
{
using (SqlConnection con = Connection.GetConnection())
{
SqlCommand Com = new SqlCommand("Total", con);
Com.CommandType = CommandType.StoredProcedure;
SqlDataReader Dr = Com.ExecuteReader();
if (Dr.Read())
{
string Result= Dr["UserName"].ToString();
Lbltotal.Text = Result;
}
}
}
存储过程:
Alter proc Total
as
begin
select Count (UserName) from Registration
end
答案 0 :(得分:0)
您没有返回任何名为UserName
的列 - 您只是返回一个没有明确列名的计数。
如果你有这样的东西 - 只有一个值 - 你也可以使用ExecuteScalar
方法,它只返回一个值:
using(SqlCommand Com = new SqlCommand("Total", con))
{
Com.CommandType = CommandType.StoredProcedure;
int count = (int)Com.ExecuteScalar();
}
如果您坚持使用SqlDataReader
,则只需使用位置参数:
using(SqlCommand Com = new SqlCommand("Total", con))
{
Com.CommandType = CommandType.StoredProcedure;
using(SqlDataReader Dr = Com.ExecuteReader())
{
if (Dr.Read())
{
string Result= Dr[0].ToString(); // take value no. 0 - the first one
Lbltotal.Text = Result;
}
}
}
答案 1 :(得分:0)
将您的storder程序更改为:
Alter proc Total
as
begin
select Count (UserName) as UserName from Registration
end