免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4866 | 回复: 7
打印 上一主题 下一主题

[C++] string stringstream如何拼接sql语句 [复制链接]

论坛徽章:
5
戌狗
日期:2014-06-09 10:29:10酉鸡
日期:2014-12-01 16:05:27处女座
日期:2015-01-07 18:35:262015亚冠之水原三星
日期:2015-06-03 09:26:222015亚冠之布里斯班狮吼
日期:2015-06-15 10:53:54
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-16 11:46 |只看该作者 |倒序浏览
C++想拼接一个sql语句(插入变量),用snprintf没有问题,想尝试用string和stringstream遇到问题,麻烦哪位指点一下,多谢!

sql语句:
    insert into Table1 (v_id,p_id,url) values (a,b,'str');
其中v_id和p_id均为int型,url为char(40)
现有变量:
int a = 10;
int b = 11;
string str("asdfasdf")
请问用string和stringstream分别如何实现?

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
2 [报告]
发表于 2015-06-16 12:04 |只看该作者
  1. #include <sstream>
  2. #include <string>

  3. std::string foo( int v_id, int p_id, const char* url )
  4. {
  5.     std::ostringstream os;
  6.     os << "insert into Table1 (v_id,p_id,url) values (" << v_id << ',' << p_id << ",\'" << url << "\');";
  7.     return os.str();
  8. }

  9. #include <iostream>
  10. using namespace std;

  11. int main( void )
  12. {
  13.     string s = foo( 10, 11, "asdfasdf" );
  14.     cout << s << endl;

  15.     return 0;
  16. }
复制代码

论坛徽章:
5
戌狗
日期:2014-06-09 10:29:10酉鸡
日期:2014-12-01 16:05:27处女座
日期:2015-01-07 18:35:262015亚冠之水原三星
日期:2015-06-03 09:26:222015亚冠之布里斯班狮吼
日期:2015-06-15 10:53:54
3 [报告]
发表于 2015-06-16 12:57 |只看该作者
回复 2# bruceteen


    多谢,顺便问一下,我之前用的是下面这种,怎么就不行?另外string的operator+  和  append方法能行吗,之前也遇到编译报错。
    stringstream os;
    os >> "insert into Table1 (v_id,p_id,url) values (" >> v_id >> ',' >> p_id >> ",\'" >> url >> "\');";

论坛徽章:
0
4 [报告]
发表于 2015-06-16 13:19 |只看该作者
sprintf很好用

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
5 [报告]
发表于 2015-06-16 13:22 |只看该作者
回复 3# kaede_1
>>?输出应该是 << 吧

论坛徽章:
5
戌狗
日期:2014-06-09 10:29:10酉鸡
日期:2014-12-01 16:05:27处女座
日期:2015-01-07 18:35:262015亚冠之水原三星
日期:2015-06-03 09:26:222015亚冠之布里斯班狮吼
日期:2015-06-15 10:53:54
6 [报告]
发表于 2015-06-16 14:28 |只看该作者
回复 5# bruceteen


    我之前想法是将sql语句输入到stringstream ss,然后在输出ss.str(),可是报错,不知道是我哪里理解错了

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
7 [报告]
发表于 2015-06-16 14:31 |只看该作者
回复 6# kaede_1
已经说了很清楚了呀,是<<符号,不是>>符号

论坛徽章:
5
戌狗
日期:2014-06-09 10:29:10酉鸡
日期:2014-12-01 16:05:27处女座
日期:2015-01-07 18:35:262015亚冠之水原三星
日期:2015-06-03 09:26:222015亚冠之布里斯班狮吼
日期:2015-06-15 10:53:54
8 [报告]
发表于 2015-06-17 11:25 |只看该作者
回复 7# bruceteen


    多谢,是我自己想多了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP