api
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
//初始化
mysql_init(&mysql);
//连接mysql,返回null失败
mysql_real_connect(&mysql,"localhost", "root", "123456", "c_sql_test",0,NULL,0);
//返回出错信息
mysql_error(&mysql);
//sql语句 buf
mysql_query(&mysql, buf);
//获得结果集
res=mysql_store_result(&mysql);
//返回结果集的行数
mysql_num_rows(res);
//从结果集中获取下一行,如果没有返回null
row=mysql_fetch_row(res);
//返回结果集的列数
mysql_num_fields(res);
//释放结果集
mysql_free_result(res);
//关闭连接
mysql_close(&mysql);
编译
gcc -o test test.c -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient
test.c
#include <stdlib.h>
#include <stdio.h>
#include "mysql.h"
int main(int argc , char* argv[]){
MYSQL *m=mysql_init(NULL);
if (!m)
{
printf("init error\n");
return 1;
}
m= mysql_real_connect(m,
"127.0.0.1",//或者localhost
"root",//用户名
"123456",//密码
"test",//数据库名,必须已经存在,否则连接失败
0,NULL,0);
if (!m)
{
printf("connect error\n");
fprintf(stderr,"Connection_failed\n");
if(mysql_errno(m)){
fprintf(stderr,"Connection error %d: %s\n",
mysql_errno(m),mysql_error(m));
}
return 1;
}
else
{
printf("connect ok\n");
}
mysql_close(m);
return 0;
}
增删改查
#include <stdio.h>
#include <string.h>
#include "mysql.h"
MYSQL mysql; // need a instance to init
MYSQL_RES *res;
MYSQL_ROW row;
int main(int argc,char *argv[])
{
int t,r;
// connect the database
mysql_init(&mysql);
if (!mysql_real_connect(&mysql,"localhost", "root", "123456", "c_sql_test",0,NULL,0))
{
printf( "Error connecting to database: %s\n",mysql_error(&mysql));
return 0;
}
else
printf("Connected mysql successfully!\n");
while(1)
{
char buf[100];
//输入sql语句
printf("input: ");
fgets(buf,sizeof buf,stdin);
if(mysql_query(&mysql, buf))
{ //如果查询失败
printf("\nmysql_query error!\n");
}
else
{
printf("mysql_query ok\n");
//获得结果集
res=mysql_store_result(&mysql);
//如果为空,继续
if(res==NULL)
{
printf("res null\n");
continue;
}
//读取结果
if(mysql_num_rows(res))
{ //有记录的情况,只有有记录取数据才有意义
//循环获取下一行
while((row=mysql_fetch_row(res)))
{
//取出结果集中记录
for(t=0;t<mysql_num_fields(res);t++)
{
printf("%s ",row[t]);
}
printf("\n");
}
}
else
{
printf("\nnull infomation!\n");
}
mysql_free_result(res); //释放结果集
}
}
mysql_close(&mysql);
return 1;
}