Должен ли я исполняться напрямую (псевдокод) ...
q = "CREATE TABLE `usermood` { `id` INT, `name` TEXT, `mood` VARCHAR DEFAULT 'gloomy' }";
exec(q);
... или связываться с (не) именованным заполнителем?
q = "CREATE TABLE `usermood` { `id` INT, `name` TEXT, `mood` VARCHAR DEFAULT :mood }";
prepare(q);
bind(q, ":mood", 'gloomy');
exec(q);
Я никогда не виделэто в любом примере кода.
Речь идет не столько о безопасности экранирования (потому что я контролирую операторы создания), сколько о преобразовании значения в формат, совместимый с базой данных (автоматический выбор представления контента по типу).
Я использую MySQL, а также SQLite3.
Существуют ли драйверы баз данных, которые не поддерживают привязку в операторах создания?
Если кому-то интересно: я использую QSqlQuery
с QVariant
в качестве значения.