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)

SqlDataReader Dr = Cmd.ExecuteReader();lblSum.Text = Dr["number"].ToString();
有错;
你可以使用DataAdapter
DataTable dt=new DataTable();
SqlDataAdapter adapter=new SqlDataAdapter("select count(*) as number from Admin", Conn);
adapter.Fill(dt);
lblSum.Text = dt.Rows[0][0].ToString();
这段代码是我手写的;未经测试;基本原理一样;你的代码的问题出在了;
lblSum.Text = Dr["number"].ToString();;
这里;无法调用;如果还有疑问可以Hi我的;哥们
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-01
问题很简单。。。你只要在执行 lblSum.Text = Dr["number"].ToString();这句之前加上 Dr.Read() 这句是读数据的操作,你的代码里没有这句,所以报了“ 在没有任何数据时进行无效的读取尝试”的错误。最好写成
if(Dr.Read())
{
lblSum.Text = Dr["number"].ToString();
}

还有 datareader使用完了之后也是要close掉的。。
第2个回答  2011-12-01
vic_zc
是正确定的.
相似回答