/// <summary>
    /// 执行一查询语句,同时返回查询结果数目
    /// </summary>
    /// <param name="strSQL"></param>
    /// <returns>sqlResultCount</returns>
    ///     public int ReturnSqlResultCount(string strSQL)
    {
        int sqlResultCount = 0;
       OleDbConnection Connection = new OleDbConnection(connStr);
       Connection.Open();
        try
        {
          
            OleDbCommand command = new OleDbCommand(strSQL, Connection);
            OleDbDataReader dataReader  = command.ExecuteReader ();
            while (dataReader.Read()) 
            {
               
                sqlResultCount = sqlResultCount+1;
                
            }
              dataReader.Close();
            }
            catch(Exception ex)
            {
            sqlResultCount = 0;
                throw (ex);
            }
            finally
            {
               Connection.Close();
            }
            return sqlResultCount;
        }、、-----------------------------
调用的时候
    private void button1_Click(object sender, EventArgs e)
        {
            DB_Access db = new DB_Access();
            int i = db.ReturnSqlResultCount ("select count(*) from inout");
            MessageBox.Show(i.ToString());
        }我表里有3条记录可是返回的值是  1 为什么呢?
我该怎么得到正确的行数呢?
当然我可以返回一个dataSet 可是这个   OleDbDataReader 怎么实现呢?

解决方案 »

  1.   

    你直接调用
    int i = command.ExecuteScalar就可以了
    这样得到的就是 count(*) 的值
      

  2.   

    public int ReturnSqlResultCount(string strSQL) 
        { 
            int sqlResultCount = 0; 
          OleDbConnection Connection = new OleDbConnection(connStr); 
          Connection.Open(); 
            try 
            { 
              
                OleDbCommand command = new OleDbCommand(strSQL, Connection); 
                sqlResultCount = command.ExecuteScalar(); 
                  return sqlResultCount; 
            } 
    private void button1_Click(object sender, EventArgs e) 
            { 
                DB_Access db = new DB_Access(); 
                int i = db.ReturnSqlResultCount ("select count(*) from inout"); 
                MessageBox.Show(i.ToString()); 
            } 
      

  3.   

    private void button1_Click(object sender, EventArgs e) 
            { 
                DB_Access db = new DB_Access(); 
                int i = db.ReturnSqlResultCount ("select count(*) as coun from inout"); 
                MessageBox.Show(i.ToString()); 
            } if(dataReader.Read()) 
                { 
                  
                    sqlResultCount = (int)reader["coun"]; 
                    
                } 
      

  4.   

    那当然咯,您 使用的Sql代码是Select Count(*) from inout,他将返回的是inout的行数,而不是其所有内容。
    sql代码可以写成 Select Count(*) As 'Cou' from inout
    您在 Public int ReturnSqlResultCount(string strSQL) 中应该是写成:
    if(dataReader.Read()) 

      sqlResultCount = datareader["Cou"].ToString(); //可能是datareader["Cou"].Value.ToString()一下不记得了