数据库连接没有问题。这个数据库有多张表,我查其中两张表,添加两个派生于CRecordset的类分别与两张表关联,其中一个查询没有问题,但是另外一个就查不到数据,用GetRecordCount得到记录数是1,但是字段是空值,但在数据库里是有数据的

解决方案 »

  1.   

    http://msdn.microsoft.com/zh-cn/library/w9109302.aspxCRecordset::GetRecordCount 是不准的
    应该用 while(! set.IsEOF() ) {  xxxxx, set.MoveNext(); } 查找
     
      

  2.   

    如果你的SQL语句经过了sprintf,或者CString format格式化过的话,
    把你的SQL语句打印出来看下,跟SQL分析器对比下是不是一样
      

  3.   

    我用MessageBox查看SQL语句,也没有问题,和在查询分析器里一样,sql语句本身就是一条非常简单的查询语句。
    我用VB+ADO查询没有问题,可以查到记录。
      

  4.   

    换成VC+ado控件的方式查,也可以查到记录,就是CRecordset的open方法查不到,奇怪
      

  5.   


    CString strSQL;
    CString fibertype;CtbTestSpec *m_ptbTestSpec=  new CtbTestSpec(&((CMomexQAreportApp*)AfxGetApp())->m_DB);  //CtbTestSpec从CRecordset派生,与tbTestSpec表关联,m_DB是CDatabase对象,已经用open链接上了数据源的。strSQL.Format(_T("Select sFiberType From tbTestSpec Where sPartNo='%s' AND (sFiberType='ONEBYONE' or sFiberType='ONEBYTWO'  or sFiberType='TWOBYTWO')"),strPN);m_ptbTestSpec->Open(CRecordset::dynaset,strSQL);
    fibertype=m_ptbTestSpec->m_sFiberType ; //取sFiberType字段值
    AfxMessageBox(fibertype);   //fibertype显示为空,实际数据表里有是记录的。
    m_ptbTestSpec->Close();
    delete m_ptbTestSpec;
      

  6.   

    你这里有没有内存增长的情况出现。
    请帮忙指导下吧,我的发帖如下:http://bbs.csdn.net/topics/390745140
      

  7.   

    试下不要用Format格式化字符串,直接用
    m_ptbTestSpec->Open(CRecordset::dynaset,_T("Select sFiberType From tbTestSpec Where sPartNo='112233445566' AND (sFiberType='ONEBYONE' or sFiberType='ONEBYTWO'  or sFiberType='TWOBYTWO'"));
    这样试下