可以用string来存储mysql_stmt_fetch返回的结果吗?

AAA20090987 2015-04-23 08:59:00
先上代码:
#include <stdio.h>
#include <mysql.h>
#include <string.h>

int main(void)
{
MYSQL *conn = mysql_init(NULL); //初始化服务器句柄
/*登陆服务器*/
if(!mysql_real_connect(conn, "localhost", "root", "", "test", 0, NULL, 0))
{
fprintf(stderr, "mysql_real_connect: %s\n", mysql_error(conn));
return -1;
}

MYSQL_STMT *stmt = mysql_stmt_init(conn); //创建MYSQL_STMT句柄

char *query = "select * from stu where id=?;";
if(mysql_stmt_prepare(stmt, query, strlen(query)))
{
fprintf(stderr, "mysql_stmt_prepare: %s\n", mysql_error(conn));
return -1;
}

int id = 1;
char name[20];

MYSQL_BIND params[2];
memset(params, 0, sizeof(params));
params[0].buffer_type = MYSQL_TYPE_LONG;
params[0].buffer = &id;
params[1].buffer_type = MYSQL_TYPE_STRING;
params[1].buffer = name;
params[1].buffer_length = sizeof(name);

mysql_stmt_bind_param(stmt, params);
mysql_stmt_bind_result(stmt, params); //用于将结果集中的列与数据缓冲和长度缓冲关联(绑定)起来
mysql_stmt_execute(stmt); //执行与语句句柄相关的预处理
mysql_stmt_store_result(stmt); //以便后续的mysql_stmt_fetch()调用能返回缓冲数据

while(mysql_stmt_fetch(stmt) == 0) //返回结果集中的下一行
printf("%d\t%s\n", id, name);

mysql_stmt_close(stmt);
mysql_close(conn);

return 0;
}


现在,我想把char name[20]; 改成 std::string name,应该怎么做呢?
...全文
297 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-04-24
  • 打赏
  • 举报
回复
记不得哪位C++大牛在哪本学习C++的书的前言里面说过 “用C语言1000行源码能完成的工作千万不要用C++重写!”
赵4老师 2015-04-24
  • 打赏
  • 举报
回复
建议楼主参考mysql自带的相关例子代码。
AAA20090987 2015-04-24
  • 打赏
  • 举报
回复
自已顶顶
yangyunzhao 2015-04-24
  • 打赏
  • 举报
回复

name.c_str()  name.size()
你的例子太简单了,没有必要换

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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