C語言下用MySQL對資料庫操作

2021-08-08 10:23:05 字數 4530 閱讀 1955

標籤:工程

需要標頭檔案#include

命令列編譯,使用下面的命令

gcc test.c -o test  -i/usr/local/include/mysql -l/usr/local/lib/mysql -lmysqlclient (-lz) (-lm)
引數在linux環境下可以寫到makefile檔案裡

#makefile 注意要寫第6行,其他的視檔名而定。

objs = yhsw.o tea_c.o tea_util_c.o

cc = gcc

cflags=-wall $(shell mysql_config --libs) $(shell mysql_config --cflags)

#cflags+=-lm

phone_auth:$(objs)

$(cc) $(objs) -o phone_auth -lm $(cflags)

yhsw.o:yhsw.c yhsw.h tea_util_c.h

$(cc) $(cflags) -c yhsw.c

tea_c.o:tea_c.c tea_util_c.h

$(cc) $(cflags) -c tea_c.c

tea_util_c.o:tea_util_c.c tea_util_c.h

$(cc) $(cflags) -c tea_util_c.c

clean:

rm *.o

rm phone_auth

windows下據說可以加這幾行預編譯

#if defined(_win32) || defined(_win64)//為了支援windows平台上的編譯

#include

#endif

在標頭檔案下一些關於資料庫的結構體已經隱含了,在例項化以後即可使用。

typedef

struct st_mysql mysql;

這個結構代表乙個查詢的(select, show, describe, explain)的返回結果。返回的資料稱為「資料集」,通過它從資料庫讀取資料。

typedef

struct st_mysql_res mysql_res;

函式功能:獲得或初始化乙個mysql結構

函式原型:mysql *mysql_init(mysql *mysql)

函式返回值:乙個被始化的mysql*控制代碼

備註:在記憶體不足的情況下,返回null

函式傳入值:mysql:型別的指標

函式返回值:無

函式功能:連線乙個mysql伺服器

函式原型:mysql * mysql_connect

(mysql *mysql,const char *host,const char *user,const char *passwd);

函式傳入值:

mysql表示乙個現存mysql結構的位址

host表示mysql伺服器的主機名或ip

user表示登入的使用者名稱

passwd表示登入的密碼

函式返回值:如果連線成功,乙個mysql *連線控制代碼;如果連線失敗,null

備註:該函式不推薦,使用mysql_real_connect()代替

函式功能:連線乙個mysql伺服器

函式原型:mysql *mysql_real_connect

(mysql *mysql,const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned int client_flag);

函式傳入值:

mysql表示乙個現存mysql結構的位址

host表示mysql伺服器的主機名或ip

user表示登入的使用者名稱

passwd表示登入的密碼

db表示要連線的資料庫

port表示mysql伺服器的tcp/ip埠

unix_socket表示連線型別

client_flag表示mysql執行odbc資料庫的標記

函式返回值:如果連線成功,一個mysql*連線控制代碼:如果連線失敗,null

函式功能:返回最新的update,delete或insert查詢影響的行數

函式原型:int mysql_affected_rows(mysql* mysql)

函式傳入值:mysql*函式功能:對指定的連線執行查詢

函式原型:int mysql_query(mysql *mysql, const char *query);

函式傳入值:query表示執行的sql語句,最後不必加分號

函式返回值:如果查詢成功,為零,出錯為非零。

相關函式:int mysql_real_query(mysql *mysql, const char *query, unsigned int length)

函式功能:為無緩衝的結果集獲得結果識別符號

函式原形:mysql_res *mysql_use_result(mysql *mysql);

函式傳入值:mysql*

函式返回值:mysql_res*,如果發生乙個錯誤發null

函式傳入值:mysql_res*函式功能:返回指定結果集中列的數量

函式原形:unsigned int mysql_num_fields(mysql_res *res);

函式傳入值:mysql_res*

函式返回值:結果集合中欄位數量的乙個無符號整數

函式功能:建立乙個資料庫

函式原形:int mysql_create_db(mysql *mysql,const char *db);

函式傳入值:

mysql_res*

db要建立的資料庫名

函式返回值:如果資料庫成功地被建立,返回零,如果發生錯誤,為非零。

函式功能:選擇乙個資料庫

函式原形:int mysql_select_db(mysql *mysql,const char *db);

函式傳入值:

mysql*

db要建立的資料庫名

函式返回值:如果資料庫成功地被建立,返回零,如果發生錯誤,為非零。

這裡的大部分**參考了mysql發行包裡面的.c原始檔。

下面這段**實現了連線到本地mysql伺服器上9***_bbs_utf8資料庫,從資料表tbb_user中根據輸入的userid取得該使用者的使用者名稱並列印輸出到終端。

#include 

#include

#include

int main()

printf("start connect\n");

if(mysql_real_connect(t_mysql, "88.88.88.88", "username", "password", "dbname", 0, null, 0) == null)

printf("start select\n");

if(mysql_real_query(t_mysql, select, strlen(select)))

if(!(res = mysql_store_result(t_mysql)))

int col = mysql_num_fields(res), i;

printf("number of fields returned: %d\n", col);

int sum = 10;

while(row = mysql_fetch_row(res)) // 開心地遍歷出10條資料

mysql_close(t_mysql);

return

0;}

mysql資料庫 DDL 資料庫定義語言 (下)

dml data manipulation language 資料操作語言。作用 用來運算元據庫表中的資料 記錄 常用的關鍵字 insert update delete 1.建立資料庫 create table 表名 欄位1 字段型別,欄位2 字段型別,欄位3 字段型別,欄位n 字段型別 creat...

MFC的CRECORDSET對資料庫的操作

mfc資料庫操作系列 資料中間層 crecordset mfc資料庫介面分為兩種 odbc和ole db odbc而言提供開放的訪問方式,使用較為簡單,但是需要註冊資料庫,這導致在部署應用程式的時候需要重新布置資料庫,並且個人意見 資料庫操作不涉及大量的資料交換建議使用。crecordset為資料庫...

用C語言操作mysql資料庫上傳變數

上傳命令 insert into table name list1,list2,values 當上傳的值為變數時可如此執行 string a 上傳的檔案 int id 1 以上變數可隨意定義 char sqlstr 100 sprintf s sqlstr,insert into table nam...