error:2014 Commands out of sync; you can't run this command now

11 篇文章 0 订阅

error:2014 Commands out of sync; you can't run this command now


原因有三:

其一、PrepareStatement中返回了多个记录集

其二、用MySQL C API建立链接的时候要添加加选项CLIENT_MULTI_STATEMENTS 或 CLIENT_MULTI_RESULTS,以便可以返回多个记录集

其三、返回了多个记录集,结果没有全部fetch出来,这一类型最为常见

假设有两个记录集,全部fetch出来的解决办法:

std::auto_ptr<sql::Statement> stmt = ...;


std::auto_ptr<sql::ResultSet> rs( stmt->getResultSet() );

if ( rs->next() )

{

...

}


if ( stmt->getMoreResult() )

{

rs.reset( stmt->getResultSet() );

...

}


//此处奇怪的是,哪怕只返回的一个记录集,最后也应该执行下面的语句,才能将记录全部fetch完毕

//由此可见,画蛇添足有时候也不见得全部都是不好的含义

while (stmt->getMoreResult() )

{

rs.reset( stmt->getResultSet() );

}

...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值