Есть ли причина, по которой я должен использовать функцию sqlite3_bind_int()? Можно ли передавать целочисленные переменные перед выполнением функции Prepare?Должен ли я использовать функцию SQLite3 bind_int?
Пример А (псевдокод):
// 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-инъекции, так что необходимо использовать bind_text функцию, но целые ?
Нет, все не в порядке. У вас должен быть подготовленный оператор для привязки значений. Если у вас нет подготовленного заявления, это не сработает. –
Я проверил это, и он работает. Я подготовил «вставить в значения TABLE (1, 2,?)» И вызвать Prepare(), а затем bind_text. Числа и были добавлены в таблицу. – Adam