c++ - C++中的数据库访问

标签 c++

当我编译这个程序时,

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <afxdb.h>
#define _AFXDLL

int main(int argc, char *argv[])
{
    CString sDsn;
    CDatabase db;

    sDsn = "ODBC; DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)}; DSN = ''; DBQ = D:\DATABASE\bible.mdb";
    db.Open(NULL, false, false, sDsn);

    try
    {
        CRecordset rs(&db);
        CString strOut;
        CString strOut2;
        CString strOut3;

        CString SqlString = "SELECT nom_prophete FROM L_PROPHETE";

        rs.Open(CRecordset::snapshot, SqlString, CRecordset::appendOnly);

        rs.GetFieldValue((short)0, strOut);
        AfxMessageBox(strOut);

        // --- petite transformation en string
        // --- pour l'affichage sur la console

        CT2CA pszConvertedAnsiString(strOut);

        std::string strStd(pszConvertedAnsiString);

        std::cout << "--" << strStd.c_str() << std::endl;

        rs.MoveNext();

        // --- petite transformation en string
        // --- pour l'affichage sur la console

        CT2CA pszConvertedAnsiString2(strOut2);

        std::string strStd2(pszConvertedAnsiString2);

        std::cout << "--" << strStd2.c_str() << std::endl;

        rs.MoveNext();

        rs.GetFieldValue((short)0, strOut3);
        AfxMessageBox(strOut3);

        // -- petite transformation en string
        // -- pour l'affichage sur la console

        CT2CA pszConvertedAnsiString3(strOut3);

        std::string strStd3(pszConvertedAnsiString3);

        std::cout << "--" << strStd3.c_str() << std::endl;

        rs.Close();
    }
    catch (CDBException *p)
    {
        AfxMessageBox(p->m_strError);
    }
    return 0;
}

它显示了这个错误,

使用/MD[d](CRT dll 版本)构建 MFC 应用程序需要 MFC 共享 dll 版本。请#define _AFXDLL 或不要使用/MD[d] c:\program files (x86)\microsoft visual studio 12.0\vc\atlmfc\include\afx.h 24 1 MA_BIBLE */

最佳答案

转到项目设置 -> 配置属性 -> 常规,确保为调试和发布版本设置“在共享 DLL 中使用 MFC”。

此外,如果您在某处包含 windows.h - 删除该行,因为 MFC 项目应仅包含 afxwin.h

关于c++ - C++中的数据库访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961583/

相关文章:

c++ - 为什么 std::move() 在 C++ 中工作?

c++ - 给定整数 : find odd and even numbers

c++ - 如何使用 tilemap 将纹理坐标完美映射到 tile?

c++ - opencv 项目中未处理的异常

c++ - 随机抽出的 4 张牌至少有一张是 A

c++ - std::enable_if 有条件地编译一个成员函数

c++ - 在 C++ 中使用模板

c++ - Matlab fmincons 和 C++ 的 NLP 求解器(如 ipopt)之间的性能差距是什么?

c++ - 返回指针的方法,指向在另一个 header 中声明的数组对象,

c++ - 非本地 lambda 和捕获变量 - "block scope"是什么意思