mysql存储过程返回结果集

rickypc 2009-10-27 07:33:27
代码:
(1)
string query = "call SelectAllCreatureTemplate()";
int t = mysql_query(mysql, query.c_str());
MYSQL_RES* m_res = mysql_store_result(mysql);
(2)
string query = "call SelectAllCreatureTemplate";
int t = mysql_query(mysql, query.c_str());
MYSQL_RES* m_res = mysql_store_result(mysql);

其中存储过程:
create procedure SelectAllCreatureTemplate()
begin
select * from CreatureTemplate;
end


代码(1)不能取到结果,也就是说m_res为空;
代码(2)不能取到结果,也就是说m_res不为空;
为什么会这样子? 是因为存储过程不能取到结果集吗?
...全文
1118 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickypc 2009-10-28
  • 打赏
  • 举报
回复
知道了,将
mysql_real_connect(mysql, LOCAL_HOST, "root","123456", db.c_str(), 0, NULL, 0);
改成
mysql_real_connect(mysql, LOCAL_HOST, "root","123456", db.c_str(), 0, NULL, CLIENT_MULTI_STATEMENTS);
就可以拿到结果了
rickypc 2009-10-28
  • 打赏
  • 举报
回复
返回值 t = 1;
rickypc 2009-10-28
  • 打赏
  • 举报
回复
但是(2)
int t = mysql_query(&mysql,"select * from CreatureTemplate");
MYSQL_RES* m_res = mysql_store_result(&mysql);

m_res不为空
ACMAIN_CHM 2009-10-28
  • 打赏
  • 举报
回复
int t = mysql_query(&mysql, "call SelectAllCreatureTemplate()");

返回值 t 是什么?
rickypc 2009-10-28
  • 打赏
  • 举报
回复
按照版主的方式也不能取到结果.

int t = mysql_query(&mysql, "call SelectAllCreatureTemplate()");
MYSQL_RES* m_res = mysql_store_result(&mysql);

m_res仍然为空
nianzhang747 2009-10-27
  • 打赏
  • 举报
回复
存储过程能取到结果

按照版主的试试
ACMAIN_CHM 2009-10-27
  • 打赏
  • 举报
回复
楼主有看别人给你的回复吗?

按照C API的语法格式,改成如下后再试。

(1)
int t = mysql_query(&mysql, "call SelectAllCreatureTemplate()");
MYSQL_RES* m_res = mysql_store_result(&mysql);
(2)

int t = mysql_query(&mysql,"select * from CreatureTemplate");
MYSQL_RES* m_res = mysql_store_result(&mysql);
rickypc 2009-10-27
  • 打赏
  • 举报
回复
不好意思,我打错了...我想要问的是:
代码:
(1)
string query = "call SelectAllCreatureTemplate()";
int t = mysql_query(mysql, query.c_str());
MYSQL_RES* m_res = mysql_store_result(mysql);
(2)
string query = "select * from CreatureTemplate";
int t = mysql_query(mysql, query.c_str());
MYSQL_RES* m_res = mysql_store_result(mysql);

其中存储过程:
create procedure SelectAllCreatureTemplate()
begin
select * from CreatureTemplate;
end


代码(1)不能取到结果,也就是说m_res为空;
代码(2)不能取到结果,也就是说m_res不为空;
为什么会这样子? 是因为存储过程不能取到结果集吗?
ACMAIN_CHM 2009-10-27
  • 打赏
  • 举报
回复
语法格式是

int mysql_query(MYSQL *mysql, const char *stmt_str)


int t = mysql_query(&mysql,"call SelectAllCreatureTemplate()")
rickypc 2009-10-27
  • 打赏
  • 举报
回复
用的是C++...
ACMAIN_CHM 2009-10-27
  • 打赏
  • 举报
回复
你用的是C/C++?

C API 的语法格式如下:
mysql_query(&mysql,stmt);


MYSQL_RES *result;
int t = mysql_query(&mysql,"call SelectAllCreatureTemplate()")
result = mysql_store_result(&mysql);
ACMAIN_CHM 2009-10-27
  • 打赏
  • 举报
回复
[Quote]还有一个问题:在数据库中存储的数据中有中文,但是在用c++获取结果的时候,中文不能读取正确,该如何处理呢?[/Quote]

mysql_query(mysql,"set names gb2312");

http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
rickypc 2009-10-27
  • 打赏
  • 举报
回复
还有一个问题:在数据库中存储的数据中有中文,但是在用c++获取结果的时候,中文不能读取正确,该如何处理呢?

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧