c/c++中如何 取得执行存储过程的多结果集...
yeerh 2011-01-22 03:41:59 --创建表
CREATE TABLE userinfo
(
userid int,
username varchar(31)
);
CREATE TABLE areainfo
(
areaid int,
areaname varchar(31)
);
--插入数据
INSERT INTO test.areainfo
(areaid, areaname)
VALUES (1, '上海');
INSERT INTO test.areainfo
(areaid, areaname)
VALUES (2, '成都');
INSERT INTO test.areainfo
(areaid, areaname)
VALUES (3, '北京');
--------------------------------------
INSERT INTO test.userinfo
(userid, username)
VALUES (1, '张三');
INSERT INTO test.userinfo
(userid, username)
VALUES (2, '李四');
INSERT INTO test.userinfo
(userid, username)
VALUES (3, '王王');
----创建存储过程
create procedure getUserArea2
(keyid int)
begin
select * from test.areainfo;
select * from test.userinfo;
end
---------------------------------
--问题..
在c/C++ 中如何调用这个存储过程并获取结果...
代码:
#include <windows.h>
#include <iostream>
#include <string>
#include "mysql.h" //在工程设置中,包含在mysql的sdk中的include文件夹下
using namespace std;
string host="localhost"; //登陆mysql使用的主机名
string user="root"; //登陆用户
string pwd="sa"; //填写自己数据库密码
string dbname="test"; //您要登陆的数据库名
string sqlProcess="call getUserArea(3)"; //sql存储过程语句
unsigned int port=3306; //数据库端口,默认为3306,也可以填写你自己制定的端口
int status; //数据库执行返回的状态,sql语句执行成功返回0
int main()
{
MYSQL *mysql;
mysql=mysql_init(0); //接口,初始化
MYSQL_RES *result;
MYSQL_ROW row; //返回数据行
//连接数据库
if( mysql_real_connect( mysql, host.c_str(), user.c_str(), pwd.c_str(), dbname.c_str(), port, NULL, CLIENT_FOUND_ROWS ) == NULL )
{
cout << "connect failure!" << endl;
return EXIT_FAILURE;
}
else
{
cout << "connect success!" << endl;
}
mysql_set_character_set( mysql, "gbk" );
//执行存储过程调用
status = mysql_query( mysql, sqlProcess.c_str( ) );
if( status != 0 )
{
cout << "query failure!" << endl;
}
cout << "the status is :" << status << endl;
result = mysql_store_result( mysql );
//显示结果 ....此外出错..
while( row = mysql_fetch_row( result ) )
{
cout << row[0] <<"|" << row[1] << endl;
}
}