Название: QSqlQuery не понятна ситуация Отправлено: BuRn от Октябрь 18, 2011, 17:56 Цитировать QSqlQuery query1("select * from orders where is_accepted=0 and is_cheked=0"); запись в базе с флагами is_accepted и is_cheked единственная, но почему-то цикл while(query1.next()) крутится 2 раза да и в первый раз в переменной id мусор query1.exec(); QString name; while(query1.next()) { int id=query1.value(0).toInt(); name=query1.value(3).toString(); QSqlQuery query2("update orders set is_cheked=1 where id=:id"); query2.bindValue(":id",id); query2.exec(); NewOrder *order = new NewOrder; qDebug()<<id; order->SetIDOrder(id); ui->tabWidget_2->addTab(order,name); } Название: Re: QSqlQuery не понятна ситуация Отправлено: Yuriy от Октябрь 18, 2011, 19:43 Обычно при построении запросов SQL числовые значения необходимо заключить в одинарные кавычки.
В вашем случае: Код: select * from orders where is_accepted='0' and is_cheked='0'; Название: Re: QSqlQuery не понятна ситуация Отправлено: Yuriy от Октябрь 18, 2011, 19:52 И еще для читаемости кода лучше ключевые слова SQL писать заглавными буквами:
Код: const QStrign strF= "SELECT * FROM orders WHERE is_accepted='%1' AND is_cheked='%2';"; а то так с ходу и не разберешь что и куда SELECT, а потом забросы бывают не в одну и даже не в 10 строк и вот тогда точно копец. Название: Re: QSqlQuery не понятна ситуация Отправлено: BuRn от Октябрь 18, 2011, 22:59 и вот интересует сразу, а возможно ли биндить таблицы, что-то мне это не удалось
Название: Re: QSqlQuery не понятна ситуация Отправлено: Yuriy от Октябрь 18, 2011, 23:09 Нужно описывать движок со своими делегатами.
У меня ушло на это приблизительно пол года, только это не API получилось, а самопальный движок с функционалом MS Access только я в нем могу описывать программы, а так черт ногу сломит. А вообще можно посмотреть готовые движки, есть же в инете всякие SQLite редакторы, основанные на Qt библиотеках. Название: Re: QSqlQuery не понятна ситуация Отправлено: RVZ от Октябрь 28, 2011, 14:07 Код
СОВСЕМ БРЕД КАКОЙТО!!!!! Цитировать QSqlQuery query1("select * from orders where is_accepted=0 and is_cheked=0"); query1.exec(); QString name; while(query1.next()) { int id=query1.value(0).toInt(); name=query1.value(3).toString(); QSqlQuery query2("update orders set is_cheked=1 where id=:id"); query2.bindValue(":id",id); query2.exec(); NewOrder *order = new NewOrder; qDebug()<<id; order->SetIDOrder(id); ui->tabWidget_2->addTab(order,name); } Название: Re: QSqlQuery не понятна ситуация Отправлено: Пантер от Октябрь 28, 2011, 14:09 QSqlQuery query2("update orders set is_cheked=1 where id=:id");
замени на QSqlQuery query2; query2.prepare ("update orders set is_cheked=1 where id=:id"); И вынеси это из цикла. Название: Re: QSqlQuery не понятна ситуация Отправлено: andrew.k от Октябрь 30, 2011, 01:27 Не по теме, просто замечание.
У тебя запрос два раза выполняется. "If query is not an empty string, it will be executed." QSqlQuery (http://doc.qt.nokia.com/latest/qsqlquery.html#QSqlQuery-2) UPD: В общем-то об этом Пантер и сказал) |