crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
Raks123
  опции профиля:
сообщение 25.4.2012, 17:29
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 2.10.2011
Пользователь №: 2920

Спасибо сказали: 0 раз(а)




Репутация:   0  


Делаю запрос, 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
  опции профиля:
сообщение 26.4.2012, 8:25
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


а зачем вызвал query.next() ?

наверное, больше подойдёт first()

Сообщение отредактировал Алексей1153 - 26.4.2012, 8:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Raks123
  опции профиля:
сообщение 26.4.2012, 8:32
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 2.10.2011
Пользователь №: 2920

Спасибо сказали: 0 раз(а)




Репутация:   0  


Я вызывал first() в итоге повисла программа и среда. next() ведь сначала добирается до первой записи, а потом идет по порядку
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 26.4.2012, 8:39
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


данные в таблице есть ? Нет ли повторных записей ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Steklova Olga
  опции профиля:
сообщение 26.4.2012, 12:33
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 27.9.2011
Из: Санкт-Петербург
Пользователь №: 2912

Спасибо сказали: 5 раз(а)




Репутация:   4  


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
  опции профиля:
сообщение 26.4.2012, 13:47
Сообщение #6


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 2.10.2011
Пользователь №: 2920

Спасибо сказали: 0 раз(а)




Репутация:   0  


Мдааааа :-D вот уж глупая ошибка)))) все исправленно)))) Спасибо, Steklova Olga)))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 2.5.2025, 5:34