#include "stdafx.h"
#include "DBDemo.h"
#include "mm.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endifusing namespace std;int main(void){
m_dbDemo.CreateInstance();
m_dbDemo.SetConnectionString(_T("Microsoft.Jet.OLEDB.4.0"), _T("Demo.mdb"), _T("123456"));
if(!m_dbDemo.OpenConnection())
{
AfxMessageBox(_T("打开数据库失败"));
return FALSE;
}

CDBAdo* pDataBase = &(((CDBDemoApp*)AfxGetApp())->m_dbDemo);
pDataBase->OpenRecordset("SELECT * FROM DemoTable"); cout<<"hello"<<endl;
int n=pDataBase->GetRecordCount();
cout<<n<<endl;
return 0;}
自己写的MFC数据库的入口程序,但是运行时也不报错,就输出hello 0明明数据库里面有记录啊

解决方案 »

  1.   

    CDBAdo*    pDataBase    = &(((CDBDemoApp*)AfxGetApp())->m_dbDemo);哪来的?
      

  2.   

    另一个里面有个定义class CDBDemoApp : public CWinApp
    {
    public:
    CDBDemoApp(); CDBAdo m_dbDemo;我直接拿来用了
      

  3.   

    看看OpenRecordset()返回值,干嘛把m_dbDemo放在那个类里面?而且还是用指针?估计记录集没有实例化呢~~~
      

  4.   

    CDBAdo*    pDataBase    = &(((CDBDemoApp*)AfxGetApp())->m_dbDemo);
    单步跟踪一下
    看看这个指针是否正确
      

  5.   

    奇怪啦
    你程序中不是已经定义了m_dbDemoCDBAdo*    pDataBase    = &(((CDBDemoApp*)AfxGetApp())->m_dbDemo);
    pDataBase->OpenRecordset("SELECT * FROM DemoTable");
    直接替换为m_dbDemo.OpenRecordset("SELECT * FROM DemoTable");
    试试