При использовании подготовленных операторов SQLite с параметрами параметр: "указывает заполнитель в выражении для литерального значения, которое заполняется при время выполнения "
Перед выполнением любого оператора SQL SQLite «компилирует» строку SQL в серию кодов операций , которые выполняются внутренней виртуальной машиной. Имена таблиц и столбцов, с которыми работает оператор SQL, являются обязательной частью процесса компиляции.
Вы можете использовать параметры для привязки "значений" к подготовленным операторам, например так:
SELECT * FROM FOO WHERE name=?;
А затем вызвать sqlite3_bind_text()
, чтобы связать строку gavinbeatty
с уже скомпилированным оператором. Однако эта архитектура означает, что вы не можете использовать такие параметры:
SELECT * FROM ? WHERE name=?; // Can't bind table name as a parameter
SELECT * FROM FOO WHERE ?=10; // Can't bind column name as a parameter