首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Visual Studio 2013 連接 MySQL 5.6 C++ 開發完整配置指南

     編輯:MySQL 綜合教學

VS2013 + MySQL Connector/C++ 1.1 靜態/動態連結庫配置與範例程式實戰

在 Windows 桌面應用開發中,使用 MySQL 官方提供的 Connector/C++ 可獲得類似 JDBC 的物件導向資料庫存取體驗。本文詳細記錄 VS2013 專案屬性配置、Debug/Release 雙模式區分、DLL 部署與常見連結錯誤排查。

環境準備清單

  • OS:Windows 7/8/10 (x64)
  • IDE:Visual Studio 2013 (VC++ 12.0)
  • MySQL Server 5.6 完整安裝包(含 Connector/C++ 1.1)
  • Boost C++ Libraries 1.60.0 (https://www.boost.org/)

關鍵提醒:MySQL 安裝時必須選擇 Complete/Full 安裝類型,否則預設目錄 C:\Program Files\MySQL\Connector.C++ 1.1 將不存在。

專案建立與原始碼

  1. 新建 Win32 Console Application → Empty Project
  2. 加入 main.cpp:
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;
using namespace sql;

int main() {
    try {
        Driver *driver = get_driver_instance();
        // 建立連線
        Connection *con = driver->connect("tcp://127.0.0.1:3306", "root", "123456");
        con->setSchema("mydata");
        con->setClientOption("characterSetResults", "utf8");

        Statement *stmt = con->createStatement();
        ResultSet *res = stmt->executeQuery("SELECT * FROM name_table");

        while (res->next()) {
            cout << res->getInt("ID") << " | "
                 << res->getString("name") << " | "
                 << res->getInt("age") << " | "
                 << res->getString("work") << " | "
                 << res->getString("others") << endl;
        }

        // 資源釋放(逆序)
        delete res;
        delete stmt;
        delete con;
    } catch (SQLException &e) {
        cerr << "# ERR: " << e.what() 
             << " (MySQL error code: " << e.getErrorCode()
             << ", SQLState: " << e.getSQLState() << ")" << endl;
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}

Debug 模式專案屬性配置

屬性頁路徑設定值
C/C++ → General → Additional Include DirectoriesC:\Program Files\MySQL\Connector.C++ 1.1\include
C:\Program Files\boost_1_60_0
Linker → General → Additional Library DirectoriesC:\Program Files\MySQL\Connector.C++ 1.1\lib\debug
Linker → Input → Additional Dependenciesmysqlcppconn.lib

DLL 部署:將以下兩檔複製至專案輸出目錄 ($(OutDir)):

  • C:\Program Files\MySQL\MySQL Server 5.6\lib\libmysql.dll
  • C:\Program Files\MySQL\Connector.C++ 1.1\lib\debug\mysqlcppconn.dll

Release 模式專案屬性配置(差異處)

屬性DebugRelease
Additional Library Directories...\lib\debug...\lib\opt
mysqlcppconn.dll 來源...\lib\debug\...\lib\opt\
Runtime Library (C/C++ → Code Generation)/MDd/MD

為何區分 Debug/Release? CRT 執行期庫、迭代器偵錯支援、符號表差異導致跨模式連結必崩潰。嚴禁混用。

執行結果驗證

資料庫測試資料:

程式輸出:

常見連結/執行錯誤對策

錯誤原因解決
LNK2019: unresolved external symbol _get_driver_instance未連結 mysqlcppconn.lib檢查 Additional Dependencies 拼寫、路徑
LNK1104: cannot open file 'mysqlcppconn.lib'Library Directories 路徑錯誤確認 lib\debug/opt 目錄存在該檔
Runtime Error: The application was unable to start correctly (0xc000007b)x86/x64 不匹配、DLL 缺失確認專案 Platform=x64,DLL 為 64 位版本
mysqlcppconn.dll not found執行目錄缺少 DLL複製至 $(OutDir) 或加入系統 PATH
Access denied for user 'root'@'localhost'密碼錯誤/權限不足檢查連線字串、MySQL 用戶權限

進階主題:連線池與 PreparedStatement

setString(1, "張三");
pstmt->setString(2, "zhang@example.com");
pstmt->executeUpdate();
delete pstmt;

替代方案:純 C API (mysql.h)

若不願引入 Boost/Connector 依賴,可直接使用 libmysql.dll + mysql.h 純 C 風格 API,程式碼較冗長但依賴極小。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved