首页 > 技术文章 > [mysql]Linux下C语言连接mysql

iyjhabc 2013-08-28 17:06 原文

安装

sudo apt-get install mysql-server

//单独装了mysql以后已经可以使用了,但还不能用c连接,编译的时候会提示找不到mysql.h,还要安装libmysqlclient-dev

apt-get install libmysqlclient-dev

 准备:

初始化库函数,初始化mysql

char* server_groups[]={"embedded","server","this_program_server",(char*)NULL};
    MYSQL *pmysql=new MYSQL;
    if(mysql_library_init(0,NULL,server_groups)){//初始化MYSQL数据库
        printf("无法chushihuahanshu库/n");
        delete pmysql;
        pmysql=NULL;
    }
    mysql_init(pmysql);//初始化MYSQL标识符,用于连接
    if(!mysql_real_connect(pmysql,"localhost","root","bingxueshen","test1",0,NULL,0)){
          fprintf(stderr,"无法连接到数据库,错误原因是:%s/n",mysql_error(pmysql));
          delete pmysql;
        pmysql=NULL;
    }

mysql_library_init():设置mysql数据库类型

mysql_init():初始化mysql资源

mysql_real_connect() :传入数据库名、账号密码等信息

 

执行sql语句,返回0表示成功

mysql_quary():执行参数中字符串SQL语句,以\0为结束标志

mysql_real_quary():功能同上,参数多了一个语句长度,以语句长度为结束标志,防止查询语句中有二进制数据0

 

获取结果

MYSQL_RES *res;
MYSQL_ROW row;
res=mysql_store_result(&mysql);//返回查询的全部结果集
while(row=mysql_fetch_row(res)){//mysql_fetch_row取结果集的下一行
     for(t=0;t<mysql_num_fields(res);t++){//结果集的列的数量
      printf("%s/t",row[t]);
     }
     printf("/n");

}
mysql_free_result(res);//操作完毕,查询结果集
mysql_store_result():获取查询结果,存放于MYSQL_RES类型中
mysql_fetch_row():一行一行地获取结果,直到读取完所有查询结果。每次返回一个MYSQL_ROW类型(其实就是一个字符串数组)
mysql_num_fields():返回查询结果包含的列数
mysql_free_result():清空结果集,使变量能继续存储以后的结果

关闭函数库与连接
mysql_close(&mysql);//关闭数据库连接

mysql_library_end();//关闭MySQL库

 

推荐阅读