You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中将变量插入char*类型的SQL字符串?

C++实现SQL语句动态值替换的几种方法

你需要把代码里add_data调用的固定VALUES替换成循环里的i、max_size和time,下面给你几种实用的实现方式:

1. 用std::stringstream(兼容C++11及以上)

这是C++里兼容性最好、用得最多的写法,步骤清晰:

首先要包含头文件<sstream>,然后在循环里替换原有的add_data调用:

#include <sstream>

// 循环内的代码替换成:
std::stringstream sql_builder;
sql_builder << "INSERT INTO ReSorts (idSort, idSizeAr, durSort_ms) VALUES(" 
            << i << ", " << max_size << ", " << time << ");";
add_data(sql_builder.str().c_str()); // 如果add_data接受const char*类型,就转成c_str()

2. 用C++20的std::format(写法最简洁)

如果你的编译器支持C++20,这种写法和C#的字符串插值几乎一样,非常直观:

需要包含头文件<format>,然后这样写:

#include <format>

// 循环内的代码替换成:
std::string sql_str = std::format(
    "INSERT INTO ReSorts (idSort, idSizeAr, durSort_ms) VALUES({}, {}, {});",
    i, max_size, time
);
add_data(sql_str.c_str());

3. 直接字符串拼接(不推荐,可读性差)

用std::string的+操作符硬拼也行,但代码看起来很乱,除非特殊情况不建议用:

std::string sql_str = "INSERT INTO ReSorts (idSort, idSizeAr, durSort_ms) VALUES(" 
                      + std::to_string(i) + ", " 
                      + std::to_string(max_size) + ", " 
                      + std::to_string(time) + ");";
add_data(sql_str.c_str());

额外提醒

  • 直接拼字符串生成SQL有SQL注入风险,如果这些值是用户输入的,最好用数据库API提供的参数化查询(预处理语句),别直接拼。
  • 你原代码里最后一行temp.closeBd()写错了,temp是指针,应该用temp->closeBd(),不然编译会报错。

内容的提问来源于stack exchange,提问作者innit_slawyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 18:42:38