请问使用SqlCommand 和 SqlDataReader 操作数据库,如何才能得到该SQL串所查到的总行数?以及如何让datareader向下一行?
        string sSqlConn;
        string Sql;
        SqlCommand com;
        SqlConnection conn;
        SqlDataReader dataRader;        sSqlConn = ConfigurationManager.ConnectionStrings["MainStr"].ConnectionString;        conn = new SqlConnection();
        conn.ConnectionString = sSqlConn;        Sql = "Select Text,TitleUrl,ID from Blog_Content where PostType = 2";
        com = new SqlCommand(Sql, conn);
        conn.Open();        dataRader = com.ExecuteReader();
        dataRader.Read();

解决方案 »

  1.   

    while(dataRader.Read())
    {
    dataRader["列名"]
    }
      

  2.   

    DataReader 只有逐行读完之后才可以知道行数
    明白它的机制你就不会有这样的问题了
      

  3.   

    SqlDataReader s = new SqlDataReader();
    s.RecordsAffected是该命令影响的总行数
    向下就s.read();
      

  4.   

    可s.RecordsAffected我得到的怎么总是-1呢?
      

  5.   

    RecordsAffected是表示Transact-SQL 语句所更改、插入或删除的行数。
    并不包括查询把。
    返回-1 表示 SELECT 语句
      

  6.   

    那如何让datareader回到首行呢?
      

  7.   

    那如何让datareader回到首行呢?
    --------重新读一遍。DataReader 在某些场合不见得一定比 Fill DataTable 好,有时候甚至不适用
    不要乱听评论,要根据需求来选择