從 MySQL 完全安裝(含頭文件/庫)、VC++ 目錄配置、專案屬性設定、資料庫/建表指令,到完整的 C++ 封裝類實現增刪改查與列表顯示。
include/、lib/、libmysql.lib、libmysql.dllD:\Program Files\MySQL\MySQL Server 5.0\includeD:\Program Files\MySQL\MySQL Server 5.0\lib\debuglibmysql.lib#include <mysql.h>
#include <winsock.h>
#pragma comment(lib, "libmysql.lib")
libmysql.lib、libmysql.dll 放至專案目錄或系統路徑mysql> CREATE DATABASE mydb;
mysql> USE mydb;
mysql> CREATE TABLE mytable (
username VARCHAR(100),
visitelist VARCHAR(200),
remark VARCHAR(200)
);
MYSQL mysql;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql, "localhost", "root", "", "mydb", 3306, NULL, 0)) {
AfxMessageBox(_T("資料庫連接失敗"));
return FALSE;
}
// 1. 新增
CString strSQL;
strSQL.Format(_T("INSERT INTO mytable(username,visitelist,remark) VALUES ('%s','%s','%s')"),
strUsername, strList, strRemark);
if (mysql_real_query(&mysql, (LPCTSTR)strSQL, strSQL.GetLength()) != 0)
AfxMessageBox(_T("新增失敗"));
// 2. 修改
strSQL.Format(_T("UPDATE mytable SET username='%s',visitelist='%s',remark='%s' WHERE username='%s'"),
strUsername, strList, strRemark, str_PreName);
if (mysql_real_query(&mysql, (LPCTSTR)strSQL, strSQL.GetLength()) != 0)
AfxMessageBox(_T("修改失敗"));
// 3. 刪除
strSQL.Format(_T("DELETE FROM mytable WHERE username='%s'"), str_PreName);
if (mysql_real_query(&mysql, (LPCTSTR)strSQL, strSQL.GetLength()) != 0)
AfxMessageBox(_T("刪除失敗"));
// 4. 查詢填充 CListCtrl
mysql_real_query(&mysql, "SELECT * FROM mytable", strlen("SELECT * FROM mytable"));
MYSQL_RES *res = mysql_use_result(&mysql);
MYSQL_ROW row;
int i = 0;
while (row = mysql_fetch_row(res)) {
m_list.InsertItem(i, row[0]);
m_list.SetItemText(i, 1, row[1]);
m_list.SetItemText(i, 2, row[2]);
i++;
}
mysql_free_result(res);
// 5. 關閉連線(建議放在 OnDestroy)
mysql_close(&mysql);
libmysql.lib 連結掌握 VC++ 6.0 與 MySQL 整合全流程,快速構建桌面資料庫應用。