数据库已经连接上,想要实现简单的查询功能
输入一个字符串pm22,如果找到匹配纪录,就显示pm33,代码如下:
    ppMyRecordSet->Open();
        ppMyRecordSet->MoveFirst();
do{
if(ppMyRecordSet->m_called !=pm22)
          ppMyRecordSet->MoveNext();
else
{
pm33=pm22;
m_listReceived.AddString(pm33);
}
}
while(!ppMyRecordSet->IsEOF());但是数据库没有反应了

解决方案 »

  1.   

    你的语句有问题,这么写试试:
    ppMyRecordSet->Open();
     ppMyRecordSet->MoveFirst();
    while(!ppMyRecordSet->IsEOF());
    {
    if(ppMyRecordSet->m_called ==pm22)
              {
             pm33=pm22;
    m_listReceived.AddString(pm33);
    }
       ppMyRecordSet->MoveNext();
    }

      

  2.   

    改好了
        ppMyRecordSet->Open();
            ppMyRecordSet->MoveFirst();
    do{
    if(ppMyRecordSet->m_called !=pm22)
              ppMyRecordSet->MoveNext();
    else
    {
    pm33=pm22;
    m_listReceived.AddString(pm33);
    ppMyRecordSet->MoveNext();//刚才没加这个,跳进死循环了
                 }
    }
    while(!ppMyRecordSet->IsEOF());
    多谢
      

  3.   

    以下是我编写的程序中的一段代码:
    CTest1Set db1;
    db1.Open(AFX_DAO_USE_DEFAULT_TYPE, NULL, 0);//打开数据库 db1.MoveFirst();//移向表的开头
    p = new User( db1.m_column1, db1.m_column2, db1.m_column3, NULL);//生成一个内部数据对象
    q = p; db1.MoveNext();//移向下一条记录
    do
    {
    p->next = new User(db1.m_column1, db1.m_column2, db1.m_column3, NULL);
    db1.MoveNext();
    p=p->next;
    } while(!db1.IsEOF());//结束否,未结束则继续
    注:1、CTest1Set是我的程序中用于打开数据库表的对象,是在建立工程文件时自动生成的数据库类,定义如下:
    class CTest1Set : public CDaoRecordset
    {
    public:
    CTest1Set(CDaoDatabase* pDatabase = NULL);
    DECLARE_DYNAMIC(CTest1Set)// Field/Param Data
    //{{AFX_FIELD(CTest1Set, CDaoRecordset)
    CString m_column1;
    CString m_column2;
    short m_column3;
    //}}AFX_FIELD// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CTest1Set)
    public:
    virtual CString GetDefaultDBName(); // REVIEW:  Get a comment here
    virtual CString GetDefaultSQL();  // default SQL for Recordset
    virtual void DoFieldExchange(CDaoFieldExchange* pFX); // RFX support
    //}}AFX_VIRTUAL// Implementation
    #ifdef _DEBUG
    virtual void AssertValid() const;
    virtual void Dump(CDumpContext& dc) const;
    #endif};    2、User是我自己定义的一个数据类,用于存储重数据库中读出的数据。
      

  4.   

    在ppMyRecordSet->Open()之前加:
    if(!ppMyRecordSet->IsOpen()),否则运行时出错.
    还有你的程序有一点的问题,你想一下如果ppMyRecordSet->Open()后,记录集是空的,你的程序就不能运行.改成while循环或者判断一下记录集是事为空.