C語言連線MySQL資料庫

2021-06-06 08:17:39 字數 2088 閱讀 6704

不想用odbc什麼的連線資料庫,想直接用mysql提供的介面連線資料庫。我用的是vs2005。

網上的一些介紹都是修改專案屬性等的設定,我不喜歡那樣。

首先 我們需要的檔案有mysql.h   my_alloc.h   my_list.h   mysql_com.h   mysql_time.h   mysql_version.h   typelib.h  以及libmysql.lib和libmysql.dll全拷到專案資料夾下。 以上提到的檔案都在mysql安裝目錄下,比如我的是:

c:\program files\mysql\mysql server 5.5。.h檔案在include目錄下;  .lib和.dll檔案在lib目錄下。

準備好後,首先包含標頭檔案和鏈結mysql庫,這裡要注意不要忘記包含winsock.h,這是連線資料庫必須的,從workbench連線資料庫時彈出的對話方塊可以看出是通過tcp連線的。

定義兩個mysql結構體變數

mysql mysql, *sock;

下面是初始化連線

mysql_init(&mysql);

主要給結構體內的元素賦初值。

接下來是真正的連線

mysql_real_connect(&mysql, "localhost", "username", "password", "dbname", null, 0, null);

第乙個引數不說了;第二個引數是資料庫所在的主機位址;第

三、四個引數是使用者名稱、密碼;第五個引數是要連線的資料庫名稱;第六個引數是埠號,可以指定也可以賦為0;第七個引數是指定連線的套接字,也不用管;第八個引數一般情況下都是0。

注意函式的返回值和php的不一樣。連線成功返回0,否則返回非0。出錯資訊可以呼叫sql_error(mysql* )來檢視。

定義sql語句(最後沒有分號):

char sqlbuf[100] = "select device_route from device";

下面讓mysql執行sql語句:

mysql_query(sock, sqlbuf); 

該函式也是成功(即使沒有查詢到資料)返回0,失敗返回非0。

查詢到了資料後就是獲取查詢結果了,這裡還要定義兩個結構體:查詢結果結構體和記錄結構體(儲存一條記錄)

mysql_res *res;

mysql_row row;  // 本質上就是二維陣列

獲取查詢結果

res = mysql_store_result(sock);

獲取每一條記錄

while (row = mysql_fetch_row(res))

釋放查詢結果:

mysql_free_result(res);

關閉mysql連線:

mysql_close(sock);

sock = null;

如果是insert、update等非查詢語句到mysql_query()就可以結束了,因為沒有結果可存。

完整的實現如下:

#include #include "accessmysql.h"

#include "mysql.h"

void main()

char sqlbuf[200] = "select device_route from device limit 0,1";

if (mysql_query(sock, sqlbuf))

mysql_res *res;

mysql_row row;

if (!(res = mysql_store_result(sock)))

while (row = mysql_fetch_row(res))

mysql_free_result(res);

mysql_close(sock);

}

the end.

C語言連線mysql資料庫

一 分配或初始化與mysql real connect 相適應的mysql物件。用mysql init 函式。mysql mysql init mysql mysql 描述 分配或初始化與mysql real connect 相適應的mysql物件。如果mysql是null指標,該函式將分配 初始化...

C語言連線mysql資料庫

作業系統是linux,需要mysql客戶端軟體開發庫libmysqlclient,這個函式庫是mysql的組成部分之一。一般標頭檔案都在 usr include mysql路徑下,庫檔案都在 usr lib mysql路徑下。如果沒有需要安裝mysql devel包 mysql devel 5.1....

C語言連線MYSQL資料庫

1 初始化 mysql mysql mysql init null 描述分配或初始化與mysql real connect 相適應的mysql物件。如果mysql是null指標,該函式將分配 初始化 並返回新物件。否則,將初始化物件,並返回物件的位址。如果mysql init 分配了新的物件,當呼叫...