while(!m_pRecordset->adoEOF)
{
    n_count = m_pRecordset->GetRecordCount();
    m_pRecordset->MoveNext();
}
ado的GetRecordCount()一开始总是返回-1,然后我再打开表之前加了
m_pRecordset->CursorLocation=adUseClient;
总是返回1,
我又再前面加了
m_pRecordset->CursorType=adOpenStatic;
可还总是返回1,为什么? 
在网上看了有很多的循环的条件是这些的while(!m_pRecordset->ISEof()),奇怪的是我没有ISEof()这个方法,为啥?

解决方案 »

  1.   

    while(m_pRecordset->adoEOF!=-1)
    {
        m_pRecordset->MoveNext();
    }
    n_count = m_pRecordset->GetRecordCount();
      

  2.   

    恩GetRecordCount()必须溜一遍才能都会正确的数目,有没有其他更简便的方法?
      

  3.   

    还是说的详细些吧,我是要把edit中输入的用户名带到表中去查,有没有这条记录,所以就用了
    select count(*) from T_admin where F_name='"+edt_username+"';
    可是当我输入的用户名,数据库根本没有的时候,它还是返回1,这是什么原因呢?
      

  4.   

    你上面的查询返回的并不是T_admin的记录集,而是另一个记录集,对应的结果记录集固定有一条记录,且只有一个字段,其中记录了T_admin中符合条件的记录数量,若T_admin中没有符合条件的记录,此字段的值为 0 。
      

  5.   

    还是没有用
    我把我的代码给贴出来
    大家看看
    CString sql_count = "select count(*) from T_ADMIN where F_NAME='"+temp_uid+"'";  
    char *csql_count = sql_count.GetBuffer(sql_count.GetLength());
    try
    {
    m_pRecordset.CreateInstance("ADODB.RecordSet"); m_pRecordset->CursorLocation=adUseClient;/*改成client游标,否则GetRecordCount()总是返回-1*/
    m_pRecordset->Open(csql_count,_variant_t((IDispatch*)theApp.m_pConnection,TRUE),adOpenDynamic,adLockOptimistic,adCmdText);
    while(!m_pRecordset->GetadoEOF())
    {
    n_count = m_pRecordset->GetRecordCount();
    m_pRecordset->MoveNext();
    }
    m_pRecordset->Close();
             if(n_count>0)   /*user exist*/
             {  ...  }
             else           
             {  ...  }      /*user not exist*/
    }
    catch(_com_error e_count)
    {
        m_error.Format("查询记录数异常,错误代码%s",e_count);
        AfxMessageBox(m_error);
    }
      

  6.   

    把第一句改为CString sql_count = "select TOP 1 * from T_ADMIN where F_NAME='"+temp_uid+"'";
      

  7.   

    luohongming(lhm)
    把第一句改为CString sql_count = "select TOP 1 * from T_ADMIN where F_NAME='"+temp_uid+"'";
    -----------------------------------------------------------------------
    我用的后台数据库是oracle的,TOP 不认
      

  8.   

    oracle 我不熟悉,只能给你一个思路。
    "select count(*) from T_ADMIN where F_NAME='"+temp_uid+"'"; 该语句返回的记录集中,第一条记录的第一个字段保存的即为T_admin中符合条件的记录数,若该字段的值为0,即表示用户不存在。
      

  9.   

    luohongming(lhm)
    ------------------------------------------------------------
    谢谢您的思路
    我去书店找几本相关的书看看
    回来再调,
      

  10.   

    CString sql_count = "select count(*) AS Nums from T_ADMIN where F_NAME='"+temp_uid+"'";  
    char *csql_count = sql_count.GetBuffer(sql_count.GetLength());
    int Count;
    try
    {
    m_pRecordset.CreateInstance("ADODB.RecordSet"); m_pRecordset->CursorLocation=adUseClient;/*改成client游标,否则GetRecordCount()总是返回-1*/
    m_pRecordset->Open(csql_count,_variant_t((IDispatch*)theApp.m_pConnection,TRUE),adOpenDynamic,adLockOptimistic,adCmdText);
             Count=(m_pRecordset->GetCollect("Nums")).intVal;
    }
    catch
    {
    }
    if(Count==0) //不存在
    {
    }
    else//存在
    {
    }
      

  11.   

    luohongming(lhm)
    -----------------------------------------
    Thank you very much!