Russian Qt Forum

Qt => Базы данных => Тема начата: Raks123 от Апрель 25, 2012, 17:25



Название: Не могу понять глюк в базы и запроса
Отправлено: Raks123 от Апрель 25, 2012, 17:25
Делаю запрос, QSqlQuery принимает его. Потом запрашиваю первый элемент и вывожу получившееся:

Код
C++ (Qt)
   QSqlQuery query;
   QSqlRecord rec = query.record();
   QString Name;
   QString Adress;
   int Port;
   int Vremya;
 
   if (!query.exec("SELECT Name, Adress, Port, Vremya FROM tcpip WHERE Id = '" + QString::number(ide) + "'; "))
       qDebug() << "Query not execing";
 
   if (query.next()){
       Name  = query.value(rec.indexOf("Name")).toString();
       Adress  = query.value(rec.indexOf("Adress")).toString();
       Port = query.value(rec.indexOf("Port")).toInt();
       Vremya = query.value(rec.indexOf("Vremya")).toInt();
 
       qDebug() << Name << " " << Adress << " " << Port << " " << Vremya;
   }
   else qDebug() << "Invalid";

Выводит следующую неведомую фигню:

QSqlQuery::value: not positioned on a valid record
QSqlQuery::value: not positioned on a valid record
QSqlQuery::value: not positioned on a valid record
QSqlQuery::value: not positioned on a valid record
""   ""   0   0

Вопрос почему? Делал подключение к базе в main.cpp, в widget.cpp работал INSERT, а вот в этом файле dialog.cpp - образуется такая фигня. Дело как то не в самом запросе, т.к. я менял нынешнее условие на WHERE Id = '10'; но все равно выводит тоже самое. Так же вместо query.next() делал query.seek(0). Я уже не знаю что делать, помогите.


Название: Re: Не могу понять глюк в базы и запроса
Отправлено: UNION labs от Апрель 25, 2012, 17:42
проверьте что возвращает ваша функция rec.indexOf


Название: Re: Не могу понять глюк в базы и запроса
Отправлено: LisandreL от Апрель 25, 2012, 18:20
Код:
QSqlQuery query;
QSqlRecord rec = query.record();
...
rec.indexOf
Вы действительно думаете, что запись из незаданного ещё запроса вернёт вам индексы?


Название: Re: Не могу понять глюк в базы и запроса
Отправлено: Raks123 от Апрель 26, 2012, 13:57
Все решено)))))))
Код
C++ (Qt)
QSqlQuery q("select ****"); //сначала задал запрос
QSqlRecord rec = q.record(); //затем запись