我应该使用SQLite3 bind_int函数吗?

时间:2016-04-20 19:39:58

标签: c++ sqlite

有什么理由我应该使用sqlite3_bind_int()函数吗?在准备执行函数之前传递整数变量是否可以?

示例A(伪代码):

// prepare statement
sstream s;
s << "insert into TABLE values(" << 1 << "," << 2 << ",?)";
//...
const char *sql = ... // sql is equal to "insert into TABLE values(1, 2, ?)";
Prepare(..., sql, ...);
sqlite3_bind_text(3, "text")

示例B(伪代码):

const char *sql = "insert into TABLE values(?, ?, ?)";
Prepare(..., sql, ...);
sqlite3_bind_int(1, 1);
sqlite3_bind_int(2, 2);
sqlite3_bind_text(3, "text")

我理解文本变量可以包含SQL Injection字符串,所以我应该使用bind_text函数,但是整数?

1 个答案:

答案 0 :(得分:2)

绑定参数可以避免格式化问题或SQL注入攻击。

然而,对于普通整数来说,这都不是问题。 因此,如果其他代码对您来说更容易,那么您并不需要 来使用sqlite3_bind_int

另一方面,您肯定希望对float / text / blob值使用绑定,因此避免sqlite3_bind_int可能只会使代码不一致。