24小时热门版块排行榜    

查看: 1562  |  回复: 9

cr153

新虫 (初入文坛)

[求助] C++调用mysql,想完成一个如下的查询,却查询失败。急求解决方法

case 3:     int paper_id;
                  cout<<"请输入ID"<                   cin>>paper_id;
                  res=mysql_query(&myCont,"select * from id_table where id=paper_id“);//查询



----------------------------------------------------------------------------------------------------
以上为局部代码
此功能很简单就是,用户输入想要查询的ID,然后数据库查询之后返回该ID的信息
问题好像是在代码中定义的int paper_id无法传入到mysql_query这个接口中
其实原因也很简单,整个SQL查询语句都在引号中,整个语句当作字符串。当然paper_id也当成了字符
  
  请问,想实现这个功能,应该怎么修改?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖置顶 ( 共有1个 )

nlyang

禁虫 (著名写手)

★ ★
感谢参与,应助指数 +1
conanwj: 金币+1, 专家考核, 感谢研讨 2012-05-31 13:31:36
cr153: 回帖置顶 2012-05-31 21:52:32
cr153: 金币+1, ★★★★★最佳答案, 成功实现了功能~感谢 2012-05-31 21:52:49
本帖内容被屏蔽

9楼2012-05-31 13:02:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

chw521

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
"select * from id_table where id=paper_id“ 改为 "select * from id_table where id=" + paper_id
2楼2012-05-30 15:35:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wudao99

禁虫 (初入文坛)

感谢参与,应助指数 +1
本帖内容被屏蔽

3楼2012-05-30 16:37:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bobobobo_8888

新虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
int paper_id;
string paper_id;
                  cout<<"请输入ID"<                   cin>>paper_id;
                  res=mysql_query(&myCont,"select * from id_table where id=" + paper_id);//查询
4楼2012-05-30 16:44:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cr153

新虫 (初入文坛)

???????:
2?: Originally posted by chw521 at 2012-05-30 15:35:04
"select * from id_table where id=paper_id“ 改为 "select * from id_table where id=" + paper_id

????????????????
5楼2012-05-30 21:47:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cr153

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by bobobobo_8888 at 2012-05-30 16:44:14
int paper_id;
string paper_id;
                  cout<<"请输入ID"<<endl;
                  cin>>paper_id;
                  res=mysql_query(&myCont,"select *  ...

系统报错,重定义
6楼2012-05-30 21:48:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

onluy

银虫 (小有名气)

【答案】应助回帖


conanwj: 金币+1, 应助指数+1, 感谢研讨 2012-05-31 13:31:15
首先你要看下在表id_table中属性列id的数据类型。
如果是字符串。
res=mysql_query(&myCont,"select * from id_table where id=‘" + paper_id+“’”);
也就是这个查询语句应该是3个字符串构成的
1、"select * from id_table where id=‘"
2、 paper_id
3、"'"
因为在sql语句中字符串要用单引号
天行健,君子以自强不息
7楼2012-05-30 23:02:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cr153

新虫 (初入文坛)

引用回帖:
7楼: Originally posted by onluy at 2012-05-30 23:02:14
首先你要看下在表id_table中属性列id的数据类型。
如果是字符串。
res=mysql_query(&myCont,"select * from id_table where id=‘" + paper_id+“’”);
也就是这个查询语句应该是3个字符串构成的 ...

表中id的类型为int
8楼2012-05-31 11:20:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cr153

新虫 (初入文坛)

引用回帖:
9楼: Originally posted by nlyang at 2012-05-31 13:02:01
int的话,就必须把int转成字符串,大概思路如下:
char * sql=new char;
memset(sql,'\0',100);
sprintf(sql,"select * from id_table where id=%d;",paper_id);
再执行sql,

如果还是不对,你就直 ...

跪谢啊~
刚才用您的代码试了一下,功能成功实现了~
我不是知识不太了解啊,压根就不了解,挂科生啊~....
这是明天要叫的大作业里的一部分
  再次感谢,好人一生平安~
10楼2012-05-31 21:52:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cr153 的主题更新
信息提示
请填处理意见