crossplatform.ru

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

> Неправильный запрос к SQLite
tumanovalex
  опции профиля:
сообщение 24.10.2010, 21:59
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 6.8.2008
Пользователь №: 253

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




Репутация:   0  


Создана таблица в базе:
CREATE TABLE [Date] (
[dateid] INTEGER  NOT NULL PRIMARY KEY AUTOINCREMENT,
[date] Date  UNIQUE NOT NULL
)

В таблицу записаны данные (смотрел SQLite Admin)
dateid    date
1    15.10.2010
2    16.10.2010
3    19.10.2010
4    21.10.2010

Данные записывались из QDateEdit запросом:
query.prepare("INSERT INTO Date(date) VALUES(?)");
query.addBindValue(ui->dtAdd->date());
if(!query.exec()) {
   QMessageBox::warning(this, "Error", "Unable to insert date");
}

При записи данных из формы я проверяю, записана ли выбранная дата (в моем случае 21.10.2010) из QDateEdit в базу:
QSqlQuery query;
query.prepare("SELECT date FROM Date WHERE date = VALUES(?)");
query.addBindValue(ui->dtAdd->date());
if(!query.exec()) {
   qDebug() << query.lastError().text();
    return;
}

Получаю сообщение: "Parameter count mismatch".
Хотелось бы получить ответы на следующие вопросы:
1. Как можно посмотреть полный текст запроса (после addBindValue). Я поставил точку останова до if(!query.exec()), но выделить текст запроса не смог.
2. Почему мой запрос с проверкой даты выполняется неправильно и как правильно написать запрос, в котором в качестве параметра используется значение QDateEdit?
Не нашел возможности на форуме внедрить свой проект, разместил его на http://zalil.ru/29849040.

Прикрепленные файлы
Прикрепленный файл  MyDB_______.zip ( 6,67 килобайт ) Кол-во скачиваний: 123
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 25.10.2010, 9:38
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(tumanovalex @ 25.10.2010, 10:35) *
yyyy-MM-dd
а дату в правильном формате указываешь?

И почему решил отказаться от подстановки значений? Заменил бы только VALUES(?), на ? и всё
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
tumanovalex
  опции профиля:
сообщение 25.10.2010, 22:18
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 24
Регистрация: 6.8.2008
Пользователь №: 253

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




Репутация:   0  


1. Так тоже не получилось:
      QSqlQuery query;
      query.prepare("SELECT date FROM Date WHERE date = ?");
      query.addBindValue(ui->dtAdd->date());
      if(!query.exec(qr)) {
       QMessageBox::warning(this, "Error", "Date not is writed in the base");
       qDebug() << query.lastError();
       return;
      }

получаю окно сообщения, а qDebug() выдает:
QSqlQuery::exec: empty query
QSqlError(-1, "", "")
2. Запрос SELECT date FROM Date WHERE date = '2010-10-21' проверял в SQLite Admin, запрос выполнился правильно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 21.12.2024, 21:09