使用sqldatareader查询数据库没有绑定到dataset上,如何查询的总条数呢?使用RecordsAffected提示没有这个属性,如果把查询语句改为select count(*) as cun,* from huifu where bianhao='0001' 则提示有未包含在聚合函数中的列,请问这个问题怎么解决,谢谢了。
不知道楼主这么做是因为什么? 你的查询语句就算获取数据总数,也会有大量的冗余 每条记录都会有一个记录总数的的字段, 若楼主坚持这么做的话 ,可以 把查询语句改为 select *,(select count(*) from huifu where bianhao='0001') as cun from huifu where bianhao='0001' 不过最后还是建议楼主用存储过程,用返回值获取记录总数。
string connString="server=(local);database=test;trusted_connection=true"; SqlConnection conn=new SqlConnection (connString); conn.Open ();string sql="select * from A select @@rowcount"; SqlCommand cmd=new SqlCommand (sql,conn);SqlDataReader dr=cmd.ExecuteReader();
2。 查询时用两个SQL语句,用SqlDataReader.NextResult获取第二个结果
你这条里面改成
select count(*) as cun from huifu where bianhao='0001'
试试
reader是以向前游标方式读取数据,因此光用reader不能得道记录数
2、调用command对象的 ExecuteScalar ,返回一个对象类型,仅表示结果集中第一行第一列的值。需要显式的转换成整形
3、自己用循环写出来(最差的方法了)
to:vivianfdlpw()您所说的用两个sql语句实现起来应该怎么做呢,能不能给个例子看看啊,谢谢了。
你的查询语句就算获取数据总数,也会有大量的冗余
每条记录都会有一个记录总数的的字段,
若楼主坚持这么做的话 ,可以
把查询语句改为
select *,(select count(*) from huifu where bianhao='0001') as cun from huifu where bianhao='0001'
不过最后还是建议楼主用存储过程,用返回值获取记录总数。
SqlConnection conn=new SqlConnection (connString);
conn.Open ();string sql="select * from A select @@rowcount";
SqlCommand cmd=new SqlCommand (sql,conn);SqlDataReader dr=cmd.ExecuteReader();
//获取第一个记录集
while(dr.Read())
{
//代码
}if(dr.NextResult())//下一个记录集
{
if(dr.Read())
{
Response.Write ("记录数为"+dr[0].ToString());
}
}//关闭连接
dr.Close ();
conn.Close ();
这个不就是最好的办法嘛.看一下.net framework1.1开发包中关于ExecuteScalar
的这部分.简单的一塌糊涂.