Russian Qt Forum
Ноябрь 29, 2024, 06:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: query.lastError().text() не выводит ошибку  (Прочитано 7093 раз)
admsasha
Гость
« : Сентябрь 21, 2009, 08:14 »

Код:
    
    QSqlDatabase db =  QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName("test");
    db.setUserName("mylogin");
    db.setPassword("mypassword");
    db.setHostName("127.0.0.1");


Этот код работает замечательно.
Код:
   QSqlQuery query(QSqlDatabase::database("test"));
   query.prepare("SELECT table from user");
   if(!query.exec()){
        qDebug() <<  query.lastError().text();
    }else{
         qDebug() << query.value(0);
    }
   

случайно ошибаюсь и пишу так
Код:
   QSqlQuery query(QSqlDatabase::database("test"));
   query.prepare("SELECT tble from user");
   if(!query.exec()){
        qDebug() <<  query.lastError().text();
    }else{
        qDebug() << query.value(0);
    }
   
но query.lastError().text() выдает "". Почему нет текста ? Как правильно вывести текст ошибки ?
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #1 : Сентябрь 21, 2009, 11:01 »

Если я правильно понимаю то prepare() немного для другого предназначен

попробуй так
Код:
   QSqlQuery query;
   if(!query.exec("SELECT tble from user")){
        qDebug() << "Error" << query.lastError();
    }else{
        qDebug() << query.value(0);
    }
Записан
admsasha
Гость
« Ответ #2 : Сентябрь 21, 2009, 11:34 »

Если я правильно понимаю то prepare() немного для другого предназначен

попробуй так
Код:
   QSqlQuery query;
   if(!query.exec("SELECT tble from user")){
        qDebug() << "Error" << query.lastError();
    }else{
        qDebug() << query.value(0);
    }


Да, так показывает. Но мне нужно вставлять параметры в SQL, в случае prepare я делал это через bindValue, а тут как быть ?
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #3 : Сентябрь 21, 2009, 12:24 »

Я просто думаю что это зависит от запросов, если ты делаешь просто Select то наверное не стоит пользоваться prepare()

А вот если с подстановкой параметров то можно и с prepare();

может prepare() если без параметров не отрабатывает или ещё что, точно сказать не могу.

Ты можешь формировать сначала строку запроса просто в QString а потом подставлять её в exec();

Ну и накройняк ты после выполнения exec() можешь посмотреть какой у тебя запрос в БД пошёл QSqlQuery::lastQuery();
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Сентябрь 21, 2009, 12:54 »

Можно попробовать ещё тип ошибки проверять.
У меня были случаи, когда возвращается ошибка типа QSqlError::ConnectionError, но текста тоже ни какого.
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.279 секунд. Запросов: 22.