Название: препарированный запрос, bindValue(...) Отправлено: Я.К. от Май 30, 2009, 20:10 Создается запрос к базе:
Код: void Base::AddTrack(Track& newTrack) По итогам: происходит следующее: mainTrackQuery.exec() возвращает 0, mainTrackQuery.lastError().text() возвращает "Parameter count mismatch" lastExecutedQuery дает вот что: Код: INSERT INTO Tracks(, ?, ? ) Но все-таки, как с таким бороться? Или как обойтись без препарированных запросов, чтобы, например, корректно сохранять в базу пути со знаком << ' >>, например? Название: Re: препарированный запрос, bindValue(...) Отправлено: Rcus от Май 30, 2009, 20:54 Никогда бы не подумал что можно параметризовать запрос названиями полей, а от вон оно как...
Еще запятых что-то слишком много в lastExecutedQuery() Название: Re: препарированный запрос, bindValue(...) Отправлено: lit-uriy от Май 30, 2009, 21:40 Код и Код запятые почему в конце? Название: Re: препарированный запрос, bindValue(...) Отправлено: BOBO4KA от Май 31, 2009, 00:20 lastExecutedQuery дает вот что: Код: INSERT INTO Tracks(, ?, ? ) Правильно ругается) Пытаешся записать в таблицу 3 значения а выбираеш только 2. Разберись с формированием имен полей, а вобще лучше делай их одинаковыми. Название: Re: препарированный запрос, bindValue(...) Отправлено: mugabe от Июнь 01, 2009, 06:12 Извиняюсь за грубость, но что там вообще за каша из бреда?
В строке :path и :pathV без запятых - удалять пытаемся с запятыми. Не говоря уже о том что так в принципе делать не совсем правильно. Подставлять название поля в качестве параметра - тоже какой-то бред. Большинство СУБД такое не пропустят. Тем более что вы в любом случае указываете строго заданное значение. Если это пропускает SQLITE - ну что, же, я рад за его возможности, но становится не совсем понятным вообще смысл поддержки такой параметризации. В строке :title, а удаляем :tetle. И я, конечно, мало знаком с диалектом SQLITE, но не совсем уверен, что такое он вообще сможет корректно выполнить: Код: ... VALUES( SELECT id FROM Titles WHERE value = ?, SELECT id FROM Paths WHERE value = ?) Вы сами хотя бы прочитайте написанный вами код. По-моему надо обладать большим везением, что бы вообще скомпилировать что-то, делая столько ошибок. Название: Re: препарированный запрос, bindValue(...) Отправлено: lit-uriy от Июнь 01, 2009, 07:21 Нда, такой вроде небольшой код, а уже столько замечаний.
Я.К., ты поди его на ночь глядя писал - гиблое это дело. |