我以前是用MFC的向导建的CRecordSet和CRecordView这样对多记录集操作很不方便,可能是我使用的有问题吧我想不用向导,自己在任意一个工程里都可以对数据库进行操作请问应如何处理?最好给个例子尤其是创建某些对象时需要哪个的头文件请告知!

解决方案 »

  1.   

    使用ADO吧,www.codeproject.com上有很多资料的
      

  2.   

    建立连接用CDatabaseCDatabase db;
    db.Open();网上有很多的例子
      

  3.   

    CDatabase myDB;
    CString strCon;
    strCon = "DSN=ODBC名;UID=用户名;PWD=密码";
    try

        myDB.OpenEx(strCon,CDatabase::noOdbcDialog);
    }
    catch(CDBException * pEx)
    {
        TRACE("RetCode:%d strError:[%s] strState:[%s]\n",
    pEx -> m_nRetCode,
    pEx -> m_strError,
    pEx -> m_strStateNativeOrigin);
    }CRecordset mySet(&myDB);
    CString strsql;
    try
    {
        strsql = "select * from 表名";
        mySet.Open(AFX_DB_USE_DEFAULT_TYPE,strsql);
        操作mySet.......
    }
    CATCH(CDBException,pEx)
    {
        pEx->ReportError();
        pEx->Delete();
    }
    END_CATCH;if(mySet.IsOpen())
        mySet.Close();
    if(myDB.IsOpen())
        myDB.Close();
      

  4.   

    To: ff2002(朵朵) 
    我是想把我的程序做成一个服务(我也不是很明白),就是VC里的ATL COM AppWizard的一个服务工程,我想在这里面连接数据库和对数据库进行读写操作,可是我在这个工程里无法创建CDatabase的对象(不包含其头文件),包含了之后就出现了另一个错误.
      

  5.   

    无论使用CDatabase还是CRecordSet都要用到#include <afxdb.h>,怎么会出现可以创建CRecordSet却不能用CDatabase的情况呢?
      

  6.   

    能创建CRecordSet倒好了,我是在class CServiceModule : public CComModule这样的一个工程里添加的,当我包含了#include <afxdb.h>之后,编译就会出错:fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>
      

  7.   

    对你程序的具体情况不了解,不好说了;
    一般像CDatabase和CRecordSet的使用都是经过无数实践的,都是格式化的东西了,你的程序一定是其它地方和这个冲突。
      

  8.   

    #include <afxdb.h>放在专门的头文件里stdafx
      

  9.   

    问题很简单,laiyiling(最熟悉的陌生人),一语道破!谢拉!