如何使用mysql的C接口访问mysql数据库

来源:互联网 发布:剑三正太脸型数据 编辑:程序博客网 时间:2024/06/05 02:28

先贴出数据库表内容:


再贴出访问mysql的C代码:

#include <stdio.h>#include <mysql.h>#include <my_global.h>int main(int argc, char* argv[]){MYSQL conn;mysql_init(&conn);               //由mysql_close()释放掉if( mysql_real_connect(&conn, "localhost", "root", "123456y", "hniois", 0, NULL, 0) == NULL ) {printf("Error %u: %s\n", mysql_errno(&conn), mysql_error(&conn));exit(1);}if( mysql_query(&conn, "select * from new_dev where id=4") ) {printf("Error %u: %s\n", mysql_errno(&conn), mysql_error(&conn));exit(1);}MYSQL_RES* result;MYSQL_ROW row;result=mysql_use_result(&conn);  //由mysql_free_result()释放掉if( NULL!=(row=mysql_fetch_row(result)) ){printf("row[0]:%s,row[3]:%s,row[4]:%s\n", row[0], row[3], row[4]);}else{printf("row==NULL\n");}mysql_free_result(result);mysql_close(&conn);return 0;}
注意:

1、执行的sql语句是select * from new_dev where id=5,那么用mysql_fetch_row( )第一次从服务器获取一行数据时,row肯定不为NULL(第二次才会为NULL), 这样就可以通过row+下标获得每一列的值,这时的值都是字符串。这次查询过后使用mysql_free_result( )释放,才能进行下一次查询。否则查询会出错,错误提示:Commands out of sync;you can't run this command now

2、如果执行的语句是select * from new_dev where id=6,那么用mysql_fetch_row( )第一次从服务器获取一行数据时,row肯定为NULL。

3、如果执行的语句是insert into new_dev(id)  values(5),,假设id是主键,肯定无法插入数据。看下图的结果:


在执行sql语句是出错,错误提示5是主键,无法插入数据。

原创粉丝点击