Название: После обновления Qt 4.7 не выполняется запрос sqlite Отправлено: sergun1604 от Июнь 06, 2011, 09:33 Отцы давно не писал но опять к вам!
Проблема: Обновил Kubuntu до 11.04 с ней Qt откомпилил приложение перенес на ubuntu 10.04 (где оно раньше стояло) пошли баги (при открытии некоторых окон прога вылетала) скопировал с kubuntu на ubuntu либы кутешные и стал их использовать Все завелось Но теперь один единственный запрос на внесение записей не срабатывает. Хотя остальные идут норм. На компе где креатор все компилится и обрабатывается классно без ошибок но вот на компе с убунтой не идет этот запрос. Хотя в проге 4 подобных запроса и они норм обрабатываются. вот запрос Код: QSqlQuery query5; хотя обновление работает Код: QString strF ="UPDATE tov SET name='%1', price='%2', groop=%3, margin='%4', ed= '%5', koef='%6', nds=%7, pod=%8, pricer='%9' " "WHERE id= %10"; //строка значений имя цена группа Измучился уже помогите кто может Название: Re: После обновления Qt 4.7 не выполняется запрос sqlite Отправлено: LisandreL от Июнь 06, 2011, 09:47 Ну вы бы привели код и текст ошибки, с которой запрос невыполняется.
Да и вообще неправильно (http://xkcd.ru/327/) так составлять запросы, надо через QSqlQuery::prepare и QSqlQuery::bindValue. Название: Re: После обновления Qt 4.7 не выполняется запрос sqlite Отправлено: sergun1604 от Июнь 06, 2011, 10:10 Во спасибо за направления.
В том то и дело что как посмотреть ошибку. На компе на котором компилю все норм а на том на которое приложение приношу как посмотришь? через терминал запускал никаких ошибок не выдает Попробую препаре и бинд валуе отпишусь Название: Re: После обновления Qt 4.7 не выполняется запрос sqlite Отправлено: sergun1604 от Июнь 06, 2011, 10:36 что то не так делаю?
Код: query5.prepare("INSERT INTO tov (name)" "VALUES (:name)"); Запрос не проходит хелп Название: Re: После обновления Qt 4.7 не выполняется запрос sqlite Отправлено: LisandreL от Июнь 06, 2011, 10:46 а на том на которое приложение приношу как посмотришь? Так вы выводите ошибку, если она произошла.Код
Название: Re: После обновления Qt 4.7 не выполняется запрос sqlite Отправлено: Mikhail от Июнь 06, 2011, 11:21 Попробуй
query5.prepare("INSERT INTO tov (name) VALUES (:name)"); query5.bindValue(":name",name); вместо query5.prepare("INSERT INTO tov (name)" "VALUES (:name)"); query5.bindValue(":name",name1); Ведь name - имя поля name1 значение Название: Re: После обновления Qt 4.7 не выполняется запрос s Отправлено: Denjs от Июнь 06, 2011, 16:25 мне кажется в последнем листинге суть дела в разделителе. имхо надо
Код: query5.prepare("INSERT INTO tov (name)" "VALUES (:name);"); Код: query5.prepare("INSERT INTO tov (name)" "VALUES (:name)"); потому что где-то я уже такое отгребал с склайтом - что без разделителя - он думает что запрос ещё не закончен. И проблема ваша мне кажется не в том что обновился Qt а в том, что SQLite обновился... PS: а вот кстати к слову некоторые iSeries-ные версии DB2 как раз не хотят видеть разделитель... у каждого свои тараканы)))) ЗЗЫ: хотя вот в пером вашем листинге ";" вроде как присутсвует.... кстати - в почему у вас в середине строки зачем-то кавычки-пробел-кавычкистоят? Код: pod, pricer) " "VALUES('%1' ЗЗЫ: Ещё добавлю, что имена колонок лучше всего заключать в кавычки которые я именую "кавычки для имен столбцов". для MySQL - это ` ("обратная одинарная кавычка" кажется). Для SQLite - это " ("двойная простая кавычка" кажется) Строковые значения - в кавычки для строк. для MySQL и SQLite - это ' ("простая одинарная кавычка" кажется). Вы точно знаете/проверяли что name в новых версиях SQLite - это нифига не зарезервированное слово? потому совсем правильно имхо будет даже Код: query5.prepare("INSERT INTO tov (\"name\") VALUES (':name');"); вот такое моё скромное имхо... Название: Re: После обновления Qt 4.7 не выполняется запрос sqlite Отправлено: sergun1604 от Июнь 07, 2011, 09:07 ребята спасибо вам но
код на проверку ошибки ни чего не выдает на убунтовском компе мол запрос выполнен пробывал сейчас применять препаре теперь еще смешнее такой код Код: query5.prepare("INSERT INTO tov (name) VALUES (:name);"); если в ковычки ставить Код: query5.prepare("INSERT INTO tov (name) VALUES (':name');"); Я в тупике Название: Re: После обновления Qt 4.7 не выполняется запрос sqlite Отправлено: sergun1604 от Июнь 07, 2011, 09:52 так ну сейчас заработал с препаре проблема была в том что обязательно надо указывать все поля
буду эксперементить на компе с убунтой теперь Название: Re: После обновления Qt 4.7 не выполняется запрос sqlite Отправлено: sergun1604 от Июнь 07, 2011, 13:38 Все спасибо всем оказывается проблема была не в бобине.
Почему то на том компе не выполнялся кусок кода в операторе if было написано if(m==1) { выполняется } else { невыполняется } написал заместо else if(m==0) глупость конечно но как этот баг отследишь. (жаль потраченного времени) зато узнал про prepare |