Russian Qt Forum

Qt => Базы данных => Тема начата: Николай Кузнецов от Август 04, 2011, 14:13



Название: QSqlQuery.prepare Бинд столбцов в SQLite
Отправлено: Николай Кузнецов от Август 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, но его нет(


Название: Re: QSqlQuery.prepare Бинд столбцов в SQLite
Отправлено: Пантер от Август 04, 2011, 14:14
Нельзя биндить имена полей.


Название: Re: QSqlQuery.prepare Бинд столбцов в SQLite
Отправлено: Николай Кузнецов от Август 04, 2011, 14:21
в первом сообщении опечатался - написал "count" вместо ":count".
Вы уверены что нельзя биндить имена столбцов?


Название: Re: QSqlQuery.prepare Бинд столбцов в SQLite
Отправлено: Пантер от Август 04, 2011, 14:22
На сколько я помню, нельзя.


Название: Re: QSqlQuery.prepare Бинд столбцов в SQLite
Отправлено: Странник от Август 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();


Название: Re: QSqlQuery.prepare Бинд столбцов в SQLite
Отправлено: Николай Кузнецов от Август 04, 2011, 15:41
to Странник
Спасибо, помогло!