使用 C++ 在 Mysql 查询中插入 JSON 格式
Insert JSON format in Mysql query using C++
我在我的 C++ 程序中使用 JSON 格式保存数据,我想将它发送到 MySql 数据库(table 选项卡有一列类型:TEXT)但查询失败(也测试了 VARCHAR 和 CHAR )
这是代码的一部分,因为我们对其余部分不感兴趣
string json_example = "{\"array\":[\"item1\",\"item2\"], \"not an array\": \"asdf\"}";
mysql_init(&mysql); //initialize database connection
string player="INSERT INTO tab values (\"";
player+= json_example;
player += "\")";
connection = mysql_real_connect(&mysql,HOST,USER,PASSWD,DB,0,NULL,0);
// save data to database
query_state=mysql_query(connection, player.c_str()); // use player.c_str()
显示将使用的最终查询:cout << player gives :
INSERT INTO tab values ("{"array":["item1","item2"], "not an
array": "asdf"}")
使用例如字符串 json_example = "some text";正在工作中
但是使用 json 格式它不起作用,也许问题来自使用大括号 {} 或双引号 "" 但我还没有找到解决它的方法。
我正在使用:
mysql Ver 14.14 Distrib 5.5.44,适用于 raspberry pi 2
下的 debian-linux-gnu (armv7l)
任何帮助将不胜感激,谢谢。
使用 prepared statement. See prepared statements documentation in the MySQL reference manual.
准备好的语句更正确、更安全、可能更快,并使您的代码更简洁。你得到了所有这些好处,不需要逃避任何事情。几乎没有理由不使用它们。
这样的事情可能会奏效。但对它持保留态度,因为我 未测试或编译 它。它应该只是给你大概的想法:
MYSQL_STMT* const statement = mysql_stmt_init(&mysql);
std::string const query = "INSERT INTO tab values(?)";
mysql_stmt_prepare(statement, query, query.size());
MYSQL_BIND bind[1] = {};
bind[0].buffer_type = MYSQL_TYPE_STRING;
bind[0].buffer = json_example.c_str();
bind[0].buffer_length = json_example.size();
mysql_stmt_bind_param(statement, bind);
mysql_stmt_execute(statement);
我在我的 C++ 程序中使用 JSON 格式保存数据,我想将它发送到 MySql 数据库(table 选项卡有一列类型:TEXT)但查询失败(也测试了 VARCHAR 和 CHAR )
这是代码的一部分,因为我们对其余部分不感兴趣
string json_example = "{\"array\":[\"item1\",\"item2\"], \"not an array\": \"asdf\"}";
mysql_init(&mysql); //initialize database connection
string player="INSERT INTO tab values (\"";
player+= json_example;
player += "\")";
connection = mysql_real_connect(&mysql,HOST,USER,PASSWD,DB,0,NULL,0);
// save data to database
query_state=mysql_query(connection, player.c_str()); // use player.c_str()
显示将使用的最终查询:cout << player gives :
INSERT INTO tab values ("{"array":["item1","item2"], "not an array": "asdf"}")
使用例如字符串 json_example = "some text";正在工作中 但是使用 json 格式它不起作用,也许问题来自使用大括号 {} 或双引号 "" 但我还没有找到解决它的方法。
我正在使用: mysql Ver 14.14 Distrib 5.5.44,适用于 raspberry pi 2
下的 debian-linux-gnu (armv7l)任何帮助将不胜感激,谢谢。
使用 prepared statement. See prepared statements documentation in the MySQL reference manual.
准备好的语句更正确、更安全、可能更快,并使您的代码更简洁。你得到了所有这些好处,不需要逃避任何事情。几乎没有理由不使用它们。
这样的事情可能会奏效。但对它持保留态度,因为我 未测试或编译 它。它应该只是给你大概的想法:
MYSQL_STMT* const statement = mysql_stmt_init(&mysql);
std::string const query = "INSERT INTO tab values(?)";
mysql_stmt_prepare(statement, query, query.size());
MYSQL_BIND bind[1] = {};
bind[0].buffer_type = MYSQL_TYPE_STRING;
bind[0].buffer = json_example.c_str();
bind[0].buffer_length = json_example.size();
mysql_stmt_bind_param(statement, bind);
mysql_stmt_execute(statement);