string cmdText = "SELECT COUNT(*) FROM (SELECT DS_Product.*, T1.ProductFile_Add AS ProductFile_Add FROM DS_Product LEFT OUTER JOIN (SELECT *  FROM DS_ProductFile         WHERE productfileclass_id = 0) T1 ON       DS_Product.Product_ID = T1.Product_ID WHERE (DS_Product.CT_LOCATION LIKE '2_*') AND (DS_Product.Product_Pass = true)  ) AS t0";OleDbConnection conn = new OleDbConnection(ConnectionString);
OleDbCommand cmd = new OleDbCommand(cmdText, conn);cmd.Connection.Open();
int recCount = (int) cmd.ExecuteScalar();
cmd.Connection.Close(); 
return recCount;执行的结果是0 。可是我用同样的语句在ACCESS中得到的是10。不知道上什么原因。

解决方案 »

  1.   

    ExecuteScalar()函数是返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。你把
    int recCount = (int) cmd.ExecuteScalar();
    改为:
    int recCount = (int) cmd.ExecuteNonQuery();试试
      

  2.   

    在线等啊。是不是语句太复杂就不可以呀如果改为  :SELECT COUNT(*) FROM (SELECT * FROM DS_Product   ) 就可以读出为10行。还是他不支持JOIN