mysql客户端使用libmysqlclient库的内部函数去访问mysql服务器,因此使用函数库中的API过程中,要指明链接到函数库和头文件。

在Linux系统中可通过命令

locate mysqlclient.a
locate mysql.h

找到文件的路径。

在数据库编程中常用的API函数

//1、初始化与mysql_real_connect()相适应的MYSQL 对象,成功返回MYSQL *句柄,失败返回NULL
MYSQL*mysql=mysql_init(NULL);
//2、链接到数据库  
MYSQL*mysql_real_connect(MYSQL *mysql,const char *host,const char *user,
const char *pwd,const char*db,unsigned int port,
const char *unix_socket,unsighed long client_flag);

参数1是初始返回值;

参数2是IP;

参数3MySQL用户名;

参数4密码;

参数5数据库名;

参数6端口;

参数unix_socket指明应该使用的套接字或者管道,没有填NULL;

参数client_flag 一般情况下填0;

成功返回连接句柄,失败返回NULL;

//3、执行sql语句  成功返回0.失败返回非0
int mysql_query(MYSQL*mysql,const char *query);
//4、获取结果集,成功返回MYSQL_RES结果集指针,失败返回NULL
 MYSQL_RES *mysql_store_result(MYSQL*conn);
//5、解析结果集 获取每一行的数据
MYSQL_ROW *mysql_fetch_row(MYSQL_RES*);
//6、释放结果集
void mysql_free_result(MYSQL_RES* result)
//7、释放资源
mysql_close(MYSQL*mysql);

完整demo如下:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include"mysql.h"
 4  int main()
 5 {
 6 
 7    MYSQL*mysql=mysql_init(NULL);
 8    if(mysql==NULL)
 9     {
10         printf("mysql_init error\n");
11     }
12    else
13         printf("success\n");
14     //连接mysql数据库
15    MYSQL*conn=mysql_real_connect(mysql,"127.0.0.1","root","123","db1",0,NULL,0);
16    if(conn==NULL)
17    {
18     printf("mysql error [%s]\n",mysql_error(mysql));
19     }
20    printf("mysql conn success\n");
21      //执行sql语句
22    char *pSQL ="select * from user";
23    int ret = mysql_query(conn,pSQL);
24    if(ret!=0)
25    {
26        printf("query error [%s]\n",mysql_error(mysql));
27     }
28     //获取查询结果集
29    MYSQL_RES *results = mysql_store_result(conn);
30    if(results==NULL)
31    {
32         printf("mysql_store_result error [%s]\n",mysql_error(mysql));
33    }
34       //循环获取每条记录
35     MYSQL_ROW row;
36     while(row=mysql_fetch_row(results))
37     {
38       printf("%s %s\n",row[0],row[1]);  //一条记录有多个字段,本例有两个
39     }
40      mysql_close(mysql);
41      return 0;
42  }

Makefile

 1 src = $(wildcard *.c)
 2 target = $(patsubst %.c, %, $(src))
 3 inc_path = /usr/include/mysql/
 4 lib_path= /usr/lib/x86_64-linux-gnu/
 5 all:$(target)
 6 %:%.c
 7     gcc $< -o $@ -I $(inc_path) -L $(lib_path) -lmysqlclient
 8 clean:
 9      -rm -rf $(target)
10 .PHONY:
11      all clean