count()函数用ExecuteScalar执行时,查到的数据库中记录数怎么像是随机数啊,
我在封装数据库操作的类中是这样写该函数的:
public SqlConnection SqlCon;
public SqlCommand SqlCom;
public SqlDataAdapter SqlDa;
public SqlDataReader SqlDr;
public string sqlconnection = string.Empty;
#region 执行T-SQL语句,返回object
public object ObjSql(string mysql)
{
object i;
SetConnection();
SqlCom = SqlCon.CreateCommand();
SqlCom.CommandText = mysql;
this.ConnOpen();
i = SqlCom.ExecuteScalar();
this.ConnClose();
return i;
}
#endregion
引用该函数的.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
}
}
//数据帮定
public void BindGrid()
{
int ID = Convert.ToInt16(Request.QueryString[ "id "].ToString());
string sign = "% ";
string sqlstr = string.Empty;
//根据主页面提交过来的搜索条件,进行相应的数据帮定
if (ID == 1)
{
string keywords = Request.QueryString[ "keys "].ToString();
string style = Request.QueryString[ "style "].ToString();
//此处QG_STflInfo为视图
sqlstr = "select * from articeMemuView ";
sqlstr += " where ISPublic=1 and " + style + " like ' " + sign + keywords + sign + " ' ";
sqlstr += " order by AddDate desc ";
}
if(ID==2)
{
sqlstr = "select * from articeMemuView order by ID ";
}
if(ID == 3)
{
sqlstr = "select * from articeMemuView where FClassID=9 order by ID ";
}
DataSet ds = bas.DsSql(sqlstr);
if (ds.Tables[0].Rows.Count > 0)
{
Label2.Text = bas.ObjSql(sqlstr).ToString();//出错点,查询结果的记录数与数据库中实际记录数不同,有时明明查出10条记录,可Label2却显示1条记录。
GridView1.DataSource = ds.Tables[0].DefaultView;
GridView1.DataBind();
}
if (ds.Tables[0].Rows.Count == 0)
{
Label1.Visible = true;
GridView1.Visible = false;
Label1.Text = "没有找到你所需要的条件@_@ ";
}
}
各位高手帮帮我看看问题出在哪啊?谢谢了
[解决办法]
ExecuteScalar 返回查询所返回的结果集中第一行的第一列
不是记录数
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
最新版本:20070130
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html