秋水之城

酒罢歌梁祝,情多付婵娟。

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

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() );

}

...

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ghlfllz/article/details/17129237
个人分类: C++ MySQL
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭