char阵列在C 并将其与其他合并
Char array at c++ and merge it with other
我想在创建它时向char数组添加一些变量。我怎样才能做到这一点?sqlite3_prepare_v2
需要char[]
。谢谢
unsigned int keyid = 10;
char buffer2[] = "SELECT * FROM table WHERE id = " + keyid; // problem (convert to char and merge)
sqlite3_prepare_v2(db, buffer2, strlen(buffer2), &stmt, 0);
您应该绑定参数。这也防止了SQL注入攻击的任何潜力。
unsigned int keyid = 10;
const char buffer2[] = "SELECT * FROM table WHERE id = ?";
sqlite3_prepare_v2(db, buffer2, -1, &stmt, 0);
sqlite3_bind_int(&stmt, 1, keyid);
C 最明显的解决方案是使用std::string
std::string buffer2 = "SELECT * FROM table WHERE id = " + std::to_string(keyid);
sqlite3_prepare_v2(db, buffer2.c_str() , buffer2.size() , &stmt, 0);
将字符串放入string
:)
std::string buffer2 = "SELECT * FROM table WHERE id = " + std::to_string(keyid);
sqlite3_prepare_v2(db, buffer2.c_str(), buffer2.length(), &stmt, 0);
您可以流式传输不同的类型,因为您正在使用C
#include <sstream>
//...
std::stringstream buffer2;
buffer2 << "SELECT * FROM table WHERE id = " << keyid;
然后使用需要C样式字符串的字符串c_str
。
buffer2.str().c_str()'
但由于这是SQL,因此在查询中使用参数要好得多。
查看sprintf,例如
sprintf(buffer2, "SELECT * FROM table WHERE id = %d", keyID);
http://www.cplusplus.com/reference/cstdio/sprintf/
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 使用C++程序合并排序没有得到正确的输出
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 在其他文件中创建类时在 c++ 项目中不起作用
- 类与私有变量的其他类之间的线程安全性
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- GlobalAlloc而不是其他分配方法
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 结构和双指针隐藏在其他结构中,多层混淆
- UE4在OnComponentBeginOverlap上铸造其他actor
- 当我在其中一个线程执行中(在activemq-cpp中)捕获到特定值时,我如何终止/停止所有其他线程
- MESI协议和std::atomic-它是否确保所有写入立即对其他线程可见?
- 保留对其他类的成员函数的引用
- COUT不适用于我的其他Turbo C 合并
- char阵列在C 并将其与其他合并