在 Windows 桌面應用開發中,使用 MySQL 官方提供的 Connector/C++ 可獲得類似 JDBC 的物件導向資料庫存取體驗。本文詳細記錄 VS2013 專案屬性配置、Debug/Release 雙模式區分、DLL 部署與常見連結錯誤排查。
https://www.boost.org/)關鍵提醒:MySQL 安裝時必須選擇 Complete/Full 安裝類型,否則預設目錄 C:\Program Files\MySQL\Connector.C++ 1.1 將不存在。
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; }
| 屬性頁路徑 | 設定值 |
|---|---|
| C/C++ → General → Additional Include Directories | C:\Program Files\MySQL\Connector.C++ 1.1\includeC:\Program Files\boost_1_60_0 |
| Linker → General → Additional Library Directories | C:\Program Files\MySQL\Connector.C++ 1.1\lib\debug |
| Linker → Input → Additional Dependencies | mysqlcppconn.lib |
DLL 部署:將以下兩檔複製至專案輸出目錄 ($(OutDir)):
C:\Program Files\MySQL\MySQL Server 5.6\lib\libmysql.dllC:\Program Files\MySQL\Connector.C++ 1.1\lib\debug\mysqlcppconn.dll| 屬性 | Debug | Release |
|---|---|---|
| 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 用戶權限 |
setString(1, "張三"); pstmt->setString(2, "zhang@example.com"); pstmt->executeUpdate(); delete pstmt;
若不願引入 Boost/Connector 依賴,可直接使用 libmysql.dll + mysql.h 純 C 風格 API,程式碼較冗長但依賴極小。