Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не могу понять шутку базы и запроса
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
Raks123
Делаю запрос, QSqlQuery принимает его. Потом запрашиваю первый элемент и вывожу получившееся:

    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). Я уже не знаю что делать, помогите.
Алексей1153
а зачем вызвал query.next() ?

наверное, больше подойдёт first()
Raks123
Я вызывал first() в итоге повисла программа и среда. next() ведь сначала добирается до первой записи, а потом идет по порядку
Алексей1153
данные в таблице есть ? Нет ли повторных записей ?
Steklova Olga
Raks123, это не шутка БД. Все элементарно.
Смотрим справку:
QSqlRecord QSqlQuery::record () const
Returns a QSqlRecord containing the field information for the current query.
QSqlQuery q("select * from employees"); //сначала задается запрос
QSqlRecord rec = q.record(); //затем берется запись
А у Вас, когда берете запись, запрос пустой.
Желаю успехов :)
Raks123
Мдааааа :-D вот уж глупая ошибка)))) все исправленно)))) Спасибо, Steklova Olga)))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.