gpt4 book ai didi

c++ - 使用 C++ 变量插入 MySQL 命令

转载 作者:搜寻专家 更新时间:2023-10-31 02:20:21 25 4
gpt4 key购买 nike

我需要使用程序提供的 C++ 变量插入 MySQL 命令以创建查询并提交。

我有以下内容:

int source, temperature, humidity, airCo, noise;
char query[500];

尝试 #1:

sprintf (query, "insert into defaultsensor1 (dateTime, temperature, humidity, airCo, noise) values (now(), " + 
temperature + ", " +
humidity + ", " +
airCo + ", " +
noise + ")";

尝试#2:

 sprintf (query, "insert into defaultsensor1 (dateTime, temperature, humidity, airCo, noise) values (now(), %i, %i, %i, %i)",
temperature,
humidity,
airCo,
noise );

尝试 #3:

sprintf (query, "insert into defaultsensor1 (dateTime, temperature, humidity, airCo, noise) values (now(), %s, %s, %s, %s)", 
std::to_string(temperature),
std::to_string(humidity),
std::to_string(airCo),
std::to_string(noise));

...aaaaa 都没有用。

互联网上的教程基本上都是围绕我上面尝试的内容展开的。我该怎么做?

最佳答案

一般提示,在给表名时使用反引号 `tablename` 以避免关键字冲突。将字符串字段值放在引号 'stringvalue' 中。

对于 sql 查询,我通常使用 std::ostringstream,因为它会自动将数字转换为字符串。

#include <sstream>

int main()
{
int source, temperature, humidity, airCo, noise;

// ... such and so forth ...

std::ostringstream sql;

sql << "insert into `defaultsensor1`";
sql << " (`dateTime`, `temperature`, `humidity`, `airCo`, `noise`)";
sql << " value ";
sql << "(now(), " << temperature << ", " << humidity << ", " << airCo << ", " << noise << ")";

std::cout << "sql: " << sql.str().c_str() << '\n';
}

注意:字符串是使用sql.str().c_str()std::ostringstream中提取的,以便通过到 MySQL API 调用。

例如。

res = stmt->executeQuery(sql.str().c_str());

std::ostringstream 转换为 std::string,然后转换为调用所需的 const char*

关于c++ - 使用 C++ 变量插入 MySQL 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32827529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com