使用Access数据库时ExecuteNonQuery()与dataset中某个表中行数差别

我先使用 int rows = cmd.ExecuteNonQuery();这句话无法返回受影响行数,
而使用 以下这几句粗体话 ** OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
int rows = ds.Tables[0].Rows.Count;
**
可以返回行数,这个怎么解释?求大神。

public int isCheckExist(string strsel)
{

OleDbConnection conn = getcon();
conn.Open();
OleDbCommand cmd = new OleDbCommand(strsel, conn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
int rows = ds.Tables[0].Rows.Count;

        //int rows = cmd.ExecuteNonQuery();返回受影响行数 **`strong text`** 
        conn.Close();
        return rows;           
    }