1. 程式人生 > >C語言連線MySQL資料庫

C語言連線MySQL資料庫

1 配置

win7 32bit,mysql5.5,vs2008

  1. vc路徑設定,工具 -> 選項 -> 專案和解決方案 -> VC++ 路徑,Platform選擇Win32,然後
    Include files中新增 D:\Program Files\MySQL\MySQL Connector.C 6.1\include
    Library files中新增 D:\Program Files\MySQL\MySQL Connector.C 6.1\lib
    注意:高版本的VS如2013已經將該設定遷移到專案屬性中;以上路徑根據安裝位置做相應修改。
  2. 附加依賴項設定,專案屬性 -> 配置屬性 -> 連結器 -> 輸入 -> 附加依賴項,編輯加入libmysql.lib
    。(也可直接在程式碼中加入#pragma comment(lib, "libmysql.lib")語句)
  3. libmysql.dll設定,MySQL安裝後該檔案在D:\Program Files\MySQL\MySQL Connector.C 6.1\lib路徑下,由於該路徑並沒有加到環境變數Path中,因此程式執行會出現“找不到libmysql.dll”的錯誤。可將該路徑加到環境變數Path中,也可將libmysql.dll檔案拷貝到程式路徑下或Path中的某個路徑,而通常是將libmysql.dll檔案拷貝到系統路徑C:\Windows\System32中。
    關於以上路徑的說明見我的另一篇
    博文

2 函式介紹

下表列出了本文用到的mysql函式

函式 說明
mysql_init mysql初始化
mysql_real_connect 連線mysql
mysql_query 執行SQL語句
mysql_store_result 儲存查詢的結果
mysql_fetch_row 取出結果中的一行
mysql_free_result 釋放結果集
mysql_close 關閉連線

3 示例程式

#include <stdio.h>
#include "mysql.h"
#pragma comment(lib, "libmysql.lib") int main(void) { const char* host = "127.0.0.1"; const char* user = "root"; const char* passwd = "******"; const char* db = "sakila"; unsigned int port = 3306; const char * query = "select * from country"; // 查詢語句 MYSQL mysql; // 宣告MySQL的控制代碼 MYSQL_RES* result; // 結果集 MYSQL_ROW row; // 結果集中的一行 mysql_init(&mysql); // MySQL初始化 if (!mysql_real_connect(&mysql, host, user, passwd, db, port, NULL, 0)) // 連線MySQL { fprintf(stderr, "連線失敗(%s)\n", mysql_error(&mysql)); return 1; } else { printf("連線成功\n"); } if (mysql_query(&mysql, query)) // 執行SQL語句 { fprintf(stderr, "查詢失敗!\n"); mysql_close(&mysql); // 關閉連線 return 1; } else { if ((result = mysql_store_result(&mysql)) == NULL) // 儲存查詢的結果 { fprintf(stderr, "儲存結果集失敗!\n"); mysql_close(&mysql); // 關閉連線 return 1; } else { printf("id\tcity\n==\t========\n"); while ((row = mysql_fetch_row(result))) // 取出結果中的一行 { printf("%s\t%s\n", row[0], row[1]); } } } mysql_free_result(result); // 釋放結果集 mysql_close(&mysql); // 關閉連線 printf("連線關閉\n"); system("pause"); return 0; }

執行結果
執行結果