C++ 访问MySQL

1.工程配置

包含头文件
mysql.h

导入库libmysql.lib

2.mysql_init

MYSQL结构代表一个连接句柄
MYSQL *mysql_init(MYSQL *mysql) ;

如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。

my_bool reconnect = true;
mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);  //设置
mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gbk");


mysql_real_connect  //连接

MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag) 

mysql_query //查询

int mysql_query(MYSQL *mysql, const char *query)
mysql_affected_rows  //改变的行数
mysql_store_result  //返回结果
mysql_num_fields  //列字段数量
mysql_num_rows //行数
mysql_fetch_field //列字段指针
mysql_fetch_row //行指针

mysql_free_result //释放结果

#include <Windows.h>
#include <mysql.h>
#include <stdio.h>
 
int main(void)
{
	// 初始化一个连接句柄MYSQL
	MYSQL* mysql;
	mysql = mysql_init(NULL);
	if (mysql == NULL)
	{
		printf("error: %s\n", mysql_error(mysql));
		return 1;
	}
 
	my_bool reconnect = true;
	mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
	mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gbk");
 
	if ( !mysql_real_connect(mysql, "XX", "XX", "XX", "XX", 0, NULL, 0) ) //主机名,用户名,密码,数据库
	{
		printf("error:%s\n", mysql_error(mysql));
		return 1;
	}
 
	int result;
	result=mysql_query(mysql, "insert into emp values(8888, 'YYYY', 'CLERK', 7782, '1982-01-23', 1300, null, 30)");
	if (result != 0)
	{
		printf("error:%s\n", mysql_error(mysql));
		return 1;
	}
	printf("%llu 行受影响\n ", mysql_affected_rows(mysql));
 
 
	result = mysql_query(mysql, "select * from emp where deptno=30;");
	if (result != 0)
	{
		printf("error:%s\n", mysql_error(mysql));
		return 1;
	}
 
	MYSQL_RES* mysql_res;
	MYSQL_FIELD* mysql_field;
	MYSQL_ROW mysql_row;
	unsigned int cols;
 
	mysql_res = mysql_store_result(mysql);
	cols = mysql_num_fields(mysql_res);
	
	if (mysql_res)
	{
		printf("返回%llu行\n", mysql_num_rows(mysql_res));
 
		while((mysql_field = mysql_fetch_field(mysql_res)))
		{
			printf("%s\t", mysql_field->name);
		}
		printf("\n");
 
		while((mysql_row = mysql_fetch_row(mysql_res)))
			{
				for (unsigned int i = 0; i < cols; ++i)
				{
					printf("%s\t", mysql_row[i] ? mysql_row[i] : "NULL");
				}
				printf("\n");
		    }
		mysql_free_result(mysql_res);
 
	}
 
 
 
 
	mysql_close(mysql);
	return 0;
}



猜你喜欢

转载自blog.csdn.net/alatebloomer/article/details/80817539