c_cpp 的MySQL的C / C ++编程API

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 的MySQL的C / C ++编程API相关的知识,希望对你有一定的参考价值。

//执行查询或表操作(update...)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h>

int main()
{
	//mysql初始化
	MYSQL *mysql = mysql_init(NULL);
	if(mysql==NULL)
	{
		//初始化失败处理
	}
	//连接数据库
	//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 *conn = mysql_real_connect(mysql, "localhost", "root", "123456", "scott", 0, NULL, 0);
	if(conn==NULL)
	{
		//连接数据库失败处理
	}

	//获取当前使用的字符集
	printf("before:[%s]\n", mysql_character_set_name(conn));
	//设置字符集
	mysql_set_character_set(conn, "utf8");
	printf("after:[%s]\n", mysql_character_set_name(conn));

	//执行sql语句
	char sql[] = "select * from dept";
	int ret = mysql_query(conn, sql); 
	if (ret!=0)
	{
		// 执行sql语句error
	}
	else // query succeeded, process any data returned by it
	{
		result = mysql_store_result(&mysql);
		if (result!=NULL)  // 有需要返回的结果集
		{
			//获取结果集中每一行的列数
			//int num = mysql_field_count(conn);
			int num = mysql_num_fields(results);

			//获取表头的列名
			MYSQL_FIELD *fields = mysql_fetch_fields(results);
			if(fields==NULL)
			{
				//获取表头的列名失败处理...
			}
			//循环打印表头
			for(i=0; i<num; i++)
			{
				printf("%s ", fields[i].name);
			}
			printf("\n");

			//获取结果集中的每一行记录
			MYSQL_ROW row;
			while(row=mysql_fetch_row(results))
			{
				for(i=0; i<num; i++)
				{
					printf("%s ", row[i]);
				}	
				printf("\n");
			}

			//释放结果集
			mysql_free_result(results);
		}
		else  //没有需要返回的结果集或mysql_store_result出错
		{
			if(mysql_field_count(&mysql) == 0)
			{
				// query does not return data
				// (it was not a SELECT)
				//没有需要返回的结果集,但可以获得影响的行数
				num_rows = mysql_affected_rows(&mysql);
			}
			else // mysql_store_result() 出错
			{
				fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
			}
		}
	}
	
	//关闭数据库连接
	mysql_close(conn);

	return 0;
}

以上是关于c_cpp 的MySQL的C / C ++编程API的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp Linux的下UDP的Socket的编程示例

c_cpp C语言中的套接字编程教程

c 编程中 mysql.h 的链接器错误

c_cpp Hackerrank的“乐高积木”问题的动态编程/递归解决方案。

c_cpp 基于图形编程的原型潜力

c_cpp 排序。暴露编程访谈的例子。