mysql

来源:互联网 发布:刘易斯汉密尔顿 知乎 编辑:程序博客网 时间:2024/06/08 05:04

C语言API

1.定义数据结构

MYSQL *mysql; //用来操作数据库的结构指针MYSQL_RES *res; //存储操作结果的结构指针MYSQL_ROW row; //存储操作结果的一行unsigned long *lengths;unsigned int num_fields;unsigned long long num_rows;unsigned long long affected_rows;unsigned long len;unsigned long str_len;char to[2*len+1];char from[len];

2.常用的函数

mysql = mysql_init(NULL); //初始化操作句柄mysql_real_connect(mysql, HOST, USER_NAME, PASSWD, NAMEOFDATABASE, 0, NULL, 0); //连接数据库mysql_real_query(mysql, query_str, strlen(query_str)); //操作数据库,query_str为mysql语句res = mysql_store_result(mysql); //存储查询结果num_fields = mysql_num_fields(res); //返回结果集中的列数num_rows = mysql_num_rows(res); //返回结果集中的行数while ( row = mysql_fetch_row(res) ) //得到查询结果的一行,可以通过row[i]访问数据{       lengths = mysql_fetch_lengths(res); //在选定行后,返回目前行的长度,可以同过lengths[i]访问}if ( mysql_field_count(&mysql) == 0 ) //在res为空的情况下,检查是否不是select操作    affected_rows = mysql_affected_rows(MYSQL *mysql); //对于不返回结果的操作,返回受影响的行数if(*mysql_error(&mysql)){ // an error occurred }if(mysql_error(&mysql)[0]){ // an error occurred }str_len = mysql_real_escape_string(mysql, to, from, len); 

mysql_real_escape_string转义from中的特殊字符,可以用来转换二进制数据成字符串,用来拼接在mysql语句中,返回除去末尾’\0’的转换后的字符串长度。只能用在已经建立连接的情况下。\, ‘, “, NUL(ASCII 0), \n, \r 和Control+Z都被编码。

值得注意的是,即使在数据库中不存在某条记录,而检查“res =mysql_store_result(mysql);”中的res结果,它不为NULL,因为只有在出错的时候才能有NULL值返回。

3.编译

需要链接库:

-lmysqlclient

4.参考

https://dev.mysql.com/doc/refman/5.7/en/c-api.html

原创粉丝点击