MySQL在C中常用的API接口

发布于:2025-06-28 ⋅ 阅读:(18) ⋅ 点赞:(0)

常用的API接口

在C中常用的mysql API接口

1、初始化mysql对象。

mysql_init(NULL);

2、mysql连接函数:第一个参数是无连接的mysql对象,第二个参数是mysql地址,后面是用户名、密码、库名。函数返回一个有连接的MySQL对象。

mysql_real_connect(m_mysql, maddr, "root", "123456", "db", 0, NULL, 0);

3、sql查询函数:有连接的mysql对象,SQL语句。

mysql_query(m_mysql, sql.c_str());

4、获取查询结果集:将查询结果放在MYSQL RES* 对象中。

MYSQL_RES* res = mysql_store_result(m_mysql); 

5、从查询结果集中获取结果记录

MYSQL_ROW row = mysql_fetch_row(res);

6、从查询结果集中获取结果数量

mysql_num_rows(res);

7、判断获取最近一次查询结果集的列数,如果最后一个查询不是SELECT查询(无结果集),则此函数返回0。

mysql_field_count(m_mysql);

代码示例

根据用户ID获取其对应的组名

//先从参数列表中获取可连接的mysql地址
int db_c connect(void){
	MYSQL* mysql = m_mysql; //先拷贝原地址 做副本
	//寻找可用的连接 定义一个常量迭代器 遍历配置列表
	for(std::vector<std::string>::const_iterator maddr = g_maddrs.begin() ;
			maddr != g_maddrs.end() ; ++maddr){
			//判断当前地址是否可用
			if(m_mysql = mysql_real_connect(mysql , maddr->c_str(),
					"root", "123456", "db", 0, NULL, 0)){
							return OK; //#define OK 1  链接成功返回OK
					}
				}
			//遍历结束后 无可用连接 打印错误日志
			logger_error("connect database fail: %s",
						mysql_error(m_mysql = mysql));
		return ERROR; //#define ERROR 0
}
//根据用户ID获取其组名
int db_c::get(char const* userid, std::string& groupname){
	//拼接sql语句
	acl::string sql;
	sql.format("SELECT group_name FROM t_router WHERE userid='%s';",
		userid);
		//执行查询语句
		if(mysql_query(m_mysql, sql.c_str())){
			//如果失败打印日志
			logger_error("query database fail: %s, sql: %s",
			mysql_error(m_mysql), sql.c_str());
			return ERROR;
			}
			//获取查询结果集
			MYSQL_RES* res = mysql_store_result(m_mysql);
			//如果获取失败打印日志
			if (!res) {
			logger_error("result is null: %s, sql: %s",
			mysql_error(m_mysql), sql.c_str());
			return ERROR;
			}
			//从查询结果集中 获取查询记录
			MYSQL_ROW row = mysql_fetch_row(res);
			//如果失败打印日志
			if (!row)
			logger_warn("result is empty: %s, sql: %s",
			mysql_error(m_mysql), sql.c_str());
			else { //成功的话 获取结果
					groupname = row[0];
			}
			return OK;
}

网站公告

今日签到

点亮在社区的每一天
去签到