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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlQuery.prepare Бинд столбцов в SQLite  (Прочитано 5208 раз)
Николай Кузнецов
Гость
« : Август 04, 2011, 14:13 »

Есть SQLite база, в ней столбцы с именами 0,1,2..9.
Необходимо делать SELECT запрос в один из столбцов, имя столбца функция делающая запрос приняла в качестве int параметра, например int A. Делаю через prepare-bind. Ошибки вроде никакой нет, но работает неправильно(

Код:
query.prepare("SELECT number, value, :count FROM MainTable WHERE number = :num");
    query.bindValue(":count",  A);
    query.bindValue(":num", (3*column + row + 1) ); // Здесь все хорошо работает))
    query.exec();

в query.value(2) должно быть содержимое столбца с номером A, но его нет(
« Последнее редактирование: Август 04, 2011, 14:19 от Николай Кузнецов » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 04, 2011, 14:14 »

Нельзя биндить имена полей.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Николай Кузнецов
Гость
« Ответ #2 : Август 04, 2011, 14:21 »

в первом сообщении опечатался - написал "count" вместо ":count".
Вы уверены что нельзя биндить имена столбцов?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Август 04, 2011, 14:22 »

На сколько я помню, нельзя.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Странник
Гость
« Ответ #4 : Август 04, 2011, 14:28 »

Вы уверены что нельзя биндить имена столбцов?
зачем его биндить? просто подставляйте в запрос как строку:
Код:
QString queryString("SELECT number, value, %1 FROM MainTable WHERE number = :num");
query.prepare(queryString.arg(A));
query.bindValue(":num", (3*column + row + 1) ); // Здесь все хорошо работает))
query.exec();
Записан
Николай Кузнецов
Гость
« Ответ #5 : Август 04, 2011, 15:41 »

to Странник
Спасибо, помогло!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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