可以,CDatabase是MFC的东西,所以要初始化MFC

解决方案 »

  1.   

    可以,你只需把MFC的库初始化后,并把CDatabase的头文件包进来即可,当然,你也需ODBC的支持
      

  2.   

    可以,在工程中把MFC倒入就可以了?
    然后就可以C,C++并行混合编程了
      

  3.   

    忘了告诉你,数据库头文件也要加入(#include <afxdb.h> )
      

  4.   

    我这样作的:
        1.建win32 console application程序,选择MFC支持
        2.#include <afxdb.h>
       
      int
    main (....)

      CDatabase db;
      int i;
     i=  db.OpenEx(......);
     cout《i《endl;
    return 0;}可是无法编译,怎么回事?另外MFC库怎么初始化?
      

  5.   

    这样吧,再加入这个头文件#include <afxwin.h>看看
      

  6.   

    生成win32 console application时,选择支持MFC
    然后对照以下代码:
    // test.cpp : Defines the entry point for the console application.
    //#include "stdafx.h"
    #include "test.h"//----------------自己加的-----------start--------------
    #include <Afxdb.h>
    //----------------自己加的-----------end--------------#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif/////////////////////////////////////////////////////////////////////////////
    // The one and only application objectCWinApp theApp;using namespace std;int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
    {
    int nRetCode = 0; // initialize MFC and print and error on failure
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    {
    // TODO: change error code to suit your needs
    cerr << _T("Fatal Error: MFC initialization failed") << endl;
    nRetCode = 1;
    }
    else
    {
    // TODO: code your application's behavior here.
    CString strHello;
    strHello.LoadString(IDS_HELLO);
    cout << (LPCTSTR)strHello << endl;
    }
    //----------------自己加的------------start-------------
    CDatabase m_db;
    //m_db.OpenEx("你的连接字符串",CDatabase::noOdbcDialog);
             //这里可以放入任何MFC中的东西。
    //----------------自己加的-----------------end-------- return nRetCode;
    }
      

  7.   


        //----------------自己加的------------start-------------
        CDatabase m_db;
        //m_db.OpenEx("你的连接字符串",CDatabase::noOdbcDialog);
             //这里可以放入任何MFC中的东西。
        //----------------自己加的-----------------end--------
       CRecordset rs;
       rs.Open(rs.Open( CRecordset::dynaset, 
          _T("SELECT * FROM mytablename") );
        
        CDBVariant varValue;short nFields = rs.GetODBCFieldCount( );
    while( !rs.IsEOF( ) )
    {
       for( short index = 0; index < nFields; index++ )
       {
          rs.GetFieldValue( index, varValue );
          // do something with varValue
         cout << varValue.m_pstring <<endl;
        //??????????????
        如何将值取出?
      //???????????????   }
       rs.MoveNext( );
    }rs.Close( );
    m_db.Close( );如何取出数据表中的值,如何将值存入数据表?
    我的表是仅有两个字段id,name
    我建了个结构:struct   mydb{
                          int id;
                          string name;
                         }
                 mydb  mydb1[10];
        
    怎样将库中的前十个记录存入mydb1[10]呢?      
      

  8.   

    CDatabase m_db;
        m_db.OpenEx("你的连接字符串",CDatabase::noOdbcDialog);
        CRecordset myrs(&m_db);
        if(!myrs.Open(strSQL))
        {
            return -1;
        }
        long i=0;
        while(!myrs.IsEOF())
       {
           if(i>=10) break;
           myrs.GetFieldValue("id",strID);
           myrs.GetFieldValue("name",strName);
           mydb1[i].id = strID;
           mydb1[i].name = strName;
           myrs.MoveNext();
           i++;
        }
        myrs.Close();
        m_db.Close();
    //--------------需要插入到数据库,可以使用ExecuteSQL函数---------
    lpszSQL  LIKE "INSERT INTO MYTABLENAME(ID,NAME) VALUES(12,'TESTNAME')"
    m_db.ExecuteSQL(lpszSQL);//-----------以上代码未经过测试,也未包含错误捕获-------------- 
    //--------------------具体开发时必须要考虑错误捕获------------