首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

MySQL 5.0 安裝配置與 Visual C++ 6.0 連接開發完整指南

     編輯:關於VC++

本文詳述 MySQL 5.0 在 Windows 下的安裝、VC6.0 專案設定、資料庫/資料表建立、CRUD 操作完整程式碼,適合初次接觸 MySQL C API 的開發者快速上手。

一、MySQL 安裝要點

  • 下載 mysql-5.0.41-win32.msi (或更新版本)。
  • 安裝類型選 Complete (完全安裝) — 唯有完整安裝才包含 C API 開發所需的 include/ 標頭檔與 lib/ 函式庫。
  • 設定根帳號密碼 (可留空),記錄服務埠 (預設 3306)。

二、VC6.0 專案環境設定

1. 包含目錄

Tools → Options → Directories → Include files → 新增:

D:\Program Files\MySQL\MySQL Server 5.0\include

2. 函式庫目錄

Directories → Library files → 新增:

D:\Program Files\MySQL\MySQL Server 5.0\lib\debug

(lib/debug 含除錯符號,lib/opt 為發布版,二選一即可)

3. 連結器輸入

Project → Settings → Link → Object/library modules → 新增:

libmysql.lib

4. 預編譯標頭 (stdafx.h)


#include "mysql.h"
#include "winsock.h"
#pragma comment(lib, "libmySQL.lib")

5. 執行階段 DLL 複製

將 libmySQL.lib、libmySQL.dll 複製至專案目錄 (或系統目錄),確保執行期可載入。

三、資料庫與資料表建立 (命令列)


mysql> SHOW DATABASES;
mysql> CREATE DATABASE mydb;
mysql> USE mydb;
mysql> CREATE TABLE mytable (
    username   VARCHAR(100),
    visitelist VARCHAR(200),
    remark     VARCHAR(200)
);
mysql> DESCRIBE mytable;

四、VC++ 核心程式碼實作

1. 連線資料庫


MYSQL mysql;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql, "localhost", "root", "", "mydb", 3306, NULL, 0)) {
    AfxMessageBox(_T("資料庫連線失敗"));
    return FALSE;
}

建議將 mysql 宣告為類別成員,在 OnDestroy 中 mysql_close(&mysql)。

2. 新增記錄


CString strSQL;
strSQL.Format(_T("INSERT INTO mytable (username, visitelist, remark) VALUES ('%s','%s','%s')"),
    strUsername, strList, strRemark);
// 注意:單引號在 Format 字串中需轉義 \' 或雙引號包裹
if (mysql_real_query(&mysql, (const char*)strSQL, strSQL.GetLength()) != 0) {
    AfxMessageBox(_T("新增失敗"));
}

3. 修改記錄


strSQL.Format(_T("UPDATE mytable SET username='%s', visitelist='%s', remark='%s' WHERE username='%s'"),
    strUsername, strList, strRemark, str_PreName); // str_PreName 為原 username
if (mysql_real_query(&mysql, (const char*)strSQL, strSQL.GetLength()) != 0) {
    AfxMessageBox(_T("修改失敗"));
}

4. 刪除記錄


strSQL.Format(_T("DELETE FROM mytable WHERE username='%s'"), str_PreName);
if (mysql_real_query(&mysql, (const char*)strSQL, strSQL.GetLength()) != 0) {
    AfxMessageBox(_T("刪除失敗"));
}

5. 查詢並填入 CListCtrl


m_list.DeleteAllItems();
if (mysql_real_query(&mysql, "SELECT * FROM mytable", strlen("SELECT * FROM mytable")) != 0) {
    AfxMessageBox(_T("查詢失敗")); return;
}
MYSQL_RES* result = mysql_use_result(&mysql);
if (!result) { AfxMessageBox(_T("取得結果集失敗")); return; }

MYSQL_ROW row;
int i = 0;
while ((row = mysql_fetch_row(result)) != NULL) {
    m_list.InsertItem(i, row[0] ? row[0] : "");
    m_list.SetItemText(i, 1, row[1] ? row[1] : "");
    m_list.SetItemText(i, 2, row[2] ? row[2] : "");
    ++i;
}
mysql_free_result(result);

五、關鍵注意事項

  • SQL 注入風險:範例直接拼接字串,實務應使用 mysql_stmt_prepare 參數化查詢。
  • 字元編碼:MySQL 5.0 預設 latin1,中文資料建議連線後執行 SET NAMES 'utf8' (或 gbk/big5),並確保 VC 專案字元集一致。
  • 錯誤處理:mysql_error(&mysql) 取得詳細錯誤訊息,建議封裝統一錯誤報告函式。
  • 連線重連:長連線可能斷線,需實作心跳或自動重連機制。
  • Unicode 建置:VC6 非原生 Unicode,字串轉換需留意 WideCharToMultiByte/MultiByteToWideChar。

六、測試驗證

  1. 編譯專案產生 MySQLDemo.exe。
  2. 執行,介面操作「新增/修改/刪除/重新整理」對應 CListCtrl 即時反映。
  3. 平行開啟 MySQL Command Line Client 執行 SELECT * FROM mytable; 交叉驗證。

總結

MySQL C API (mysql.h) 提供輕量級連接介面,配合 VC6 經典 MFC 專案,可快速構建資料庫應用。本文涵蓋安裝、專案設定、DDL/DML 完整範例,為後續進階開發 (連線池、預處理語句、事務控制、ORM 封裝) 奠定基礎。完整 Demo 原始碼請下載附件,含 mydb 資料庫匯出腳本,置於 MySQL data/ 目錄即可直接測試。

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