Из тонкого руководства :
int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
Возвращает индекс параметра SQL по его имени.
Идля параметров :
?
Знак вопроса, за которым не следует число, создает параметр, номер которого на единицу больше, чем самый большой параметрномер уже присвоен.
...
: AAAA
Двоеточие, за которым следует имя идентификатора, содержит место для именованного параметра с именем : AAAA .
Сделайте акцент на моем во втором разделе.
Ваш SQL вообще не имеет именованных параметров, у вас есть просто старые заполнители.Имя параметра - это имя заполнителя (:AAAA
), а не имя рассматриваемого столбца;помните, что вы можете использовать заполнители в местах, где никакое имя не может быть получено автоматически, поэтому вы должны сами назвать их.
Если вы хотите использовать ActiveLevel
в качестве именованного параметра, тогда ваш SQL должен выглядеть следующим образом:
update User set Name = ? , Dev = ?, ActiveLevel = :ActiveLevel Where _id = ?
И вы, вероятно, захотите заменить другие заполнители (?
) именованными параметрами для согласованности.