C#中怎么获取Select count(*) 的返回值?

SqlConnection Conn = new SqlConnection(DataEnter.strConn);
Conn.Open();
SqlCommand Cmd = new SqlCommand("select count(*) as number from Admin", Conn);
SqlDataReader Dr = Cmd.ExecuteReader();
lblSum.Text = Dr["number"].ToString();
Conn.Close();

执行的时候抛出异常
InvalidOperationException
在没有任何数据时进行无效的读取尝试。

有人知道这个问题怎么解决吗?
异常信息:

用户代码未处理 System.InvalidOperationException
Message="在没有任何数据时进行无效的读取尝试。"
Source="System.Data"
StackTrace:
在 System.Data.SqlClient.SqlDataReader.GetValue(Int32 i)
在 System.Data.SqlClient.SqlDataReader.get_Item(String name)
在 Admin_User.Page_Load(Object sender, EventArgs e) 位置 e:\fsMuseum\Admin\User.aspx.cs:行号 41
在 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
在 System.Web.UI.Control.OnLoad(EventArgs e)
在 System.Web.UI.Control.LoadRecursive()
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

你那个SQL语句得出的最终结果是一个 int类型的数字,所以你用SqlDataReader 时候读取的时候根本不能以一个数字来读取,所以也就没有数据
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-24
SqlConnection Conn = new SqlConnection(DataEnter.strConn);
Conn.Open();
SqlCommand Cmd = new SqlCommand("select count(*) as number from Admin", Conn);
SqlDataReader Dr = Cmd.ExecuteReader();
if(Dr.Read())
{
lblSum.Text = Dr["number"].ToString();
}
Dr.Close();
Conn.Close();

ExecuteReader()独占连接,用后得关闭。本回答被提问者采纳
第2个回答  2010-08-25
if(Dr.Read())
{
lblSum.Text = Dr["number"].ToString();
}
相似回答