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

先贴出数据库表内容:

如何使用mysql的C接口访问mysql数据库_第1张图片

再贴出访问mysql的C代码:

#include 
#include 
#include 

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是主键,无法插入数据。

你可能感兴趣的:(MySQL,Linux,SQL)