#include <iostream>
#include <mysql.h>
#include <string> #include <assert.h> int main()
{
MYSQL *ms_conn = mysql_init(NULL);
if (ms_conn == NULL)
{
std::cout << "Error: mysql_init failed." << std::endl;
return ;
}
std::cout << "Info: mysql_init success." << std::endl; // 参数CLIENT_MULTI_STATEMENTS 指定一次query 可以执行多条SQL
MYSQL *ms_temp = NULL;
ms_temp = mysql_real_connect(ms_conn, "localhost", "root", "123456sx",
"suyh", , NULL, CLIENT_MULTI_STATEMENTS);
if (ms_temp == NULL)
{
std::cout << "Error: mysql_real_connect() failed." << std::endl;
std::cout << mysql_error(ms_conn) << std::endl;
mysql_close(ms_conn), ms_conn = NULL;
return ;
}
std::cout << "Info: mysql_real_connect() succect." << std::endl; std::string str_sqls = "";
str_sqls += "SELECT id, account, sex, level, powers FROM player_data WHERE id = 100000";
str_sqls += ";";
str_sqls += "SELECT id, account, sex, level, powers FROM player_data WHERE id = 100001";
str_sqls += ";";
str_sqls += "SELECT id, account, sex, level, powers FROM player_data WHERE id = 100002"; int res = ;
res = mysql_real_query(ms_conn, str_sqls.c_str(), str_sqls.size());
if (res != )
{
std::cout << "Info: query failed, sql: " << str_sqls.c_str() << std::endl;
std::cout << mysql_error(ms_conn) << std::endl;
}
else
{
std::cout << "Info: query success." << std::endl;
std::cout << std::endl; // CLIENT_MULTI_STATEMENTS 指定该选项需要mysql_next_result() 函数来获取下一条结果集
// 如果结果集未取完,则不能进行query 操作。
do
{
MYSQL_RES *ms_res = mysql_store_result(ms_conn);
assert(ms_res != NULL); unsigned int field_num = mysql_num_fields(ms_res);
std::cout << "fileds number is " << field_num << std::endl; MYSQL_FIELD* field_info = mysql_fetch_field(ms_res);
assert(field_info != NULL); MYSQL_ROW row_data = NULL;
while ()
{
row_data = mysql_fetch_row(ms_res);
if (row_data == NULL)
break; unsigned long *field_lens = mysql_fetch_lengths(ms_res);
assert(field_lens != NULL);
for (int i = ; i < field_num; ++i)
{
if (field_info[i].type == MYSQL_TYPE_BLOB)
{
std::cout << "current filed type is BLOB." << std::endl;
continue;
} if (row_data[i] == NULL)
{
std::cout << "field_lens[" << i << "] = " << field_lens[i]
<< ", value is NULL." << std::endl;
}
else
{
std::cout << "field_lens[" << i << "] = " << field_lens[i]
<< ", value is " << row_data[i] << std::endl;
}
}
} mysql_free_result(ms_res), ms_res = NULL; std::cout << "#######################################" << std::endl;
} while (mysql_next_result(ms_conn) == );
} mysql_close(ms_conn), ms_conn = NULL;
return ;
}

MYSQL C API : CLIENT_MULTI_STATEMENTS 选项的更多相关文章

  1. c++使用mysql的api连接相关问题

    记录一下自己使用中的相关问题,方便有相同问题的同学解决. 关于在VS中的各种配置.看这里.只是须要注意一下,我如今用的mysql版本号是5.6的,已经没有[MySQL Server \lib\opt] ...

  2. MySQL C API概述

    以下列表总结了C API中可用的功能.有关更多详细信息,请参见 第27.8.7节“C API函数描述”中的说明. my_init():在线程安全程序中初始化全局变量和线程处理程序 mysql_affe ...

  3. MySql接口API函数综述

    C API函数概述 函数 描述 mysql_affected_rows() 返回上次UPDATE.DELETE或INSERT查询更改/删除/插入的行数. mysql_autocommit() 切换 a ...

  4. PHP数据库操作:从MySQL原生API到PDO

    本文将举详细例子向大家展示PHP是如何使用MySQL原生API.MySQLi面向过程.MySQLi面向对象.PDO操作MySQL数据库的. 为了后面的测试,先建立数据库表test.包含表名user,s ...

  5. mysql C API 字符串玩转备份调优

  6. The MySQL C API 编程实例

    在网上找了一些MYSQL C API编程的文章,看了后认为还是写的不够充分,依据自己经验写了这篇<The MySQL C API 编程实例>,希望对须要调用到MYSQL的C的API的朋友有 ...

  7. MySQL Backup mysqldump 常用选项与主要用法

    The mysqldump client utility performs logical backups, producing a set of SQL statements that can be ...

  8. MySQL原生API、MySQLi面向过程、MySQLi面向对象、PDO操作MySQL

    [转载]http://www.cnblogs.com/52fhy/p/5352304.html 本文将举详细例子向大家展示PHP是如何使用MySQL原生API.MySQLi面向过程.MySQLi面向对 ...

  9. MySQL C API(23)

    C API 提供了对 MySQL c/s 模型的底层访问.C API 代码在 mysqlclient 库中实现.可以从该库中引用到的变量及含义: 环境变量 含义 MYSQL_UNIX_PORT 本地连 ...

随机推荐

  1. PostgreSQL 列出所有表名和数据库名

    列出表名   直接 \d 不加参数 或 SELECT   tablename   FROM   pg_tables   WHERE   tablename   NOT   LIKE   'pg%'   ...

  2. c#新手之1-如何组织类及相互调用

    不知道这个文章的名字起的对不对,姑且这么叫吧.我在这之前用c语言写程序几乎很少用函数调用来解决问题,都是用全局变量然后面向过程对数据做简单的处理,这就造成了我在学习c@之后仍有这个毛病,好点的时候有个 ...

  3. Python的平凡之路(8)

    (本文是对平凡之路(7)的补充等) 一.动态导入模块 import importlib __import__('import_lib.metaclass') #这是解释器自己内部用的 #importl ...

  4. get到的新技能

    1.重拾选择器 (一)类选择器与id选择器的区别 W3C标准这样规定的,在同一个页面内,不允许有相同名字的id对象出现,但是允许相同名字的class. 这样,一般网站分为头,体,脚部分,因为考虑到它们 ...

  5. Reverse-Daily(2)-wow

    链接:http://pan.baidu.com/s/1eS9JNP4 密码:ltl4 本体分析比较简单,算法是解一个22元一次方程 这里引入了numpy这样一个python库,灰常强大 import ...

  6. Maven项目中的run as选项介绍

    maven install:把本项目发布到本地资源库maven package:编译.测试,然后打包项目maven test:执行测试maven clean:把该资源从本地资源库清除.在基于Maven ...

  7. C# 代码示例_结构/数组/枚举...

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. Lua协程

    协作例程 1.同一时刻仅一个例程在运行 2.执行权让渡和恢复[栈]

  9. Spark SQL Thrift Server 配置 Kerberos身份认证和权限管理

    转载请注明出处:http://www.cnblogs.com/xiaodf/ 之前的博客介绍了通过Kerberos + Sentry的方式实现了hive server2的身份认证和权限管理功能,本文主 ...

  10. [读书笔记]OSGI-灵活的类加载器架构

    以下内容来自周志明的<深入理解Java虚拟机>. 学习JEE规范,去看JBoss源码:学习类加载器,就去看OSGI源码. OSGI,即Open Service Gateway Initia ...