MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 2260|回复: 2
打印 上一主题 下一主题

[VC相关] 【c】mysql的预处理交叉使用

[复制链接]
跳转到指定楼层
1#
发表于 2013-9-7 21:21:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位:
mysql提供了c语言的预处理接口,请问多个预处理句柄如何交叉使用:

样例:
   MYSQL mysql;
   mysql_init(&mysql);
   MYSQL *pMysql = &mysql;
  //连接数据库--此处省略


  //注意:初始化两个预处理句柄
  MYSQL_STMT *pStmt_1  = mysql_stmt_init(pMysql);
  MYSQL_STMT *pStmt_2  = mysql_stmt_init(pMysql);

  //SELECT_SQL_1 是一条查询sql语句,假设查询A表,此为第一条
  mysql_stmt_prepare(pStmt_1,  SELECT_SQL, strlen( SELECT_SQL_1));
  //SELECT_SQL_2 是一条查询sql语句,假设更新B表,此为第二条
  mysql_stmt_prepare(pStmt_2,  UPDATE_SQL, strlen( SELECT_SQL_2));

  //执行第一条
  mysql_stmt_execute(pStmt_1);
  //绑定第一个,rsltBind_1为第一个语句的绑定
  mysql_stmt_bind_result(pStmt_1, rsltBind_1);

  //获取第一条的语句
  while(!mysql_stmt_fetch(pStmt_1))
{
     //处理和运算第一条预处理语句的每一条记录
     
    //问题: 如何依据第一条语句记录的处理后的结果 查询第二条语句,目前会报 2014 (CR_COMMANDS_OUT_OF_SYNC)
    //假设paramBind_2 是 第二条语句的绑定
     mysql_stmt_bind_param(pStmt_2, paramBind_2);
     mysql_stmt_execute(pStmt_2);
     //获取第二条语句的记录,并打印出来
     
     
}

   //释放相关资源
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享淘帖 顶 踩
2#
 楼主| 发表于 2013-9-7 22:21:45 | 只看该作者
【已解决】
需要为不同的预处理语句的句柄,设置光标
个人理解,类似与DB2的游标,给各自执行语句赋予一个唯一标识,同时缓冲区也分离开来
,这样便可以交叉使用了;

unsigned long type = (unsigned long) CURSOR_TYPE_READ_ONLY;
mysql_stmt_attr_set(pStmt_1, STMT_ATTR_CURSOR_TYPE, (void*) &type);
mysql_stmt_attr_set(pStmt_2, STMT_ATTR_CURSOR_TYPE, (void*) &type);
3#
发表于 2013-9-9 09:57:29 | 只看该作者
{:soso_e179:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-5-17 21:35 , Processed in 0.065253 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表