mysql c API
安装开发包(mysql-connector-c-6.0.2-linux-glibc2.3-x86-32bit.tar.gz)
头文件和动态库
mysql-connector-c-6.0.2-linux-glibc2.3-x86-32bit.tar.gz
1.tar -xvzf mysql-connector-c-6.0.2-linux-glibc2.3-x86-32bit.tar.gz -C /usr/local
2.mv mysql-connector-c-6.0.2-linux-glibc2.3-x86-32bit mysql
3.编译命令:
gcc -I/usr/local/mysql/include -L/usr/local/mysql/lib -lmysqlclient -o filename filename.c
4.export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib //把mysql库文件的路径该LD_LIBRARY_PATH
5.设置一个符号连接 ln -s /var/lib/mysql/mysql.sock /tmp
mysql服务默认的端口号3306
在源文件中加入一个头文件 #include<mysql.h>
mysql中的一个新的数据结构MYSQL :服务器的句柄标识符号
MYSQL *conn //声明一个服务器的句柄
初始化服务器的句柄
MYSQL* mysql_init(void *)
conn=mysql_init(NULL);
连接数据库
void *mysql_real_connect(MYSQL* conn,char* servername,char * username,char* password,char* dbname,int prot,void* NULL,int fd)
参数说明:
MYSQL* conn//上面初始化的服务器句柄
char* servername//数据库服务所在的服务器的名称或IP地址
char * username//登入数据的用户
char* password//用户的密码
char* dbname//具体的数据库名
int prot//服务端口号3306 ,也可以写0
NULL
0
返回值NULL 表连接失败
关闭连接:mysql_close(MYSQL* conn) 释放资源空间
错误提示函数char* mysql_error(MYSQL*conn);获取连接数据库可能发生的错误信息
执行语句命令
mysql_query(MYSQL* conn,char* sql)char * sql:sql语句名另,也可以是mysql操作命令
select * from student
存放查询结果集的数据结构MYSQL_RES
代表记录的一个安全行MYSQL_ROW
将语句执行额结果存放到MYSQL_RES
MYSQL_RES* mysql_store_result(MYSQL*)
MYSQL_RES结构中存放的记录总数mysql_num_rows
MYSQL_RES结构中存放的记录字段数mysql_num_fields
从MYSQL_RES存储结构中去数据暂时保存到MYSQL_ROW MYSQL_ROW mysql_fetch_row(MYSQL_RES *)
通过循环从MYSQL_ROW 取出每个字段的数据
示例程序:
/**connect_mysql.c*/
#include<stdio.h>
#include<mysql.h>
#include<string.h>
int main(void)
{
MYSQL * conn=NULL;
conn=mysql_init(NULL);
if(mysql_real_connect(conn,"localhost","root","123456","newer",3306,NULL,0)==NULL)
{
printf("coonect eror is %s\n",mysql_error(conn));
return -1;
}
printf("connect success\n");
mysql_close(conn);
return 0;
}
/*create database,table,insert,SELECT*/
#include<mysql.h>
#include<stdio.h>
int main()
{
MYSQL * conn=NULL;
conn=mysql_init(NULL);
if(mysql_real_connect(conn,"localhost","root","123456","newer",3306,NULL,0)==NULL)
{
printf("connect error %s\n",mysql_error(conn));
return -1;
}
mysql_query(&conn,"drop database if exists newer3;");
mysql_query(&conn,"create database newer3;");
mysql_query(&conn,"use newer3;");
mysql_query(&conn,"create table student(id integer primary key,name varchar(10));");
mysql_query(&conn,"insert into student values(1,'aaaaa');");
mysql_query(&conn,"insert into student values(2,'bbbbbb');");
mysql_close(&conn);
return 0;
}
/*demo.c*/
#include<stdio.h>
#include<string.h>
int main()
{
MYSQL * conn=NULL;
conn=mysql_init(NULL);
if(mysql_real_connect(conn,"localhost","root","123456","newer3",0,NULL,0)==NULL)
{
printf("error is %s\n",mysql_error(conn));
return -1;
}
mysql_query(&conn,"select * from student;");
MYSQL_RES *res;//声明存储结构
res=mysql_store_result(conn);
int row1=mysql_num_rows(res);
int col=mysql_num_fields(res);
printf("row=%d\tcol=%d\n",row1,col);
MYSQL_ROW row;//成名取数据的结构,不是指针
int i;
while((row=mysql_fetch_row(res))!=NULL)
{//判断是否数据全部去完,函数返回NULL表示数据去完
for(i=0;i<col;i++)
{
// printf("%s\t%s\n",row[0],row[1]);
printf("%s\t",row[i]);
}
printf("\n");
}
mysql_free_result(res);
mysql_close(&conn);
return 0;
}