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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: bindValue  (Прочитано 6421 раз)
anDROid
Гость
« : Апрель 24, 2011, 12:32 »

http://www.prog.org.ru/topic_7098_0.html

Аналогичная проблема,так и не понял в чем суть.
Код:
qry.prepare( "SELECT value FROM settings WHERE name=:name" );
    qry.bindValue(":name","Start");
    qry.exec();
Не пашет
Код:
qDebug() << qry.lastQuery();
Выдает
Код:
"SELECT value FROM settings WHERE name=:name"
Записан
Drafter
Гость
« Ответ #1 : Апрель 24, 2011, 22:38 »

Попробуйте:
qry.bindValue(":name", QVariant("Start"));
Записан
silver47
Гость
« Ответ #2 : Апрель 25, 2011, 07:16 »

Какая база? Чего отвечает qDebug() << qry.lastError().text();
Записан
anDROid
Гость
« Ответ #3 : Апрель 26, 2011, 14:06 »

Попробуйте:
qry.bindValue(":name", QVariant("Start"));
Не помогло
Записан
anDROid
Гость
« Ответ #4 : Апрель 26, 2011, 14:06 »

Какая база? Чего отвечает qDebug() << qry.lastError().text();
sqlite

Код:
" Parameter count mismatch"
Записан
Drafter
Гость
« Ответ #5 : Апрель 28, 2011, 10:16 »

А база подключена к qry? И открыта ли она - db.isOpen()?

Должно быть как-то так:
Код:
    
    QSqlDatabase db = QSqlDatabase::database(DBConnectionName, true);

    QSqlQuery query(db);
    query.prepare("SELECT * FROM ExerciseResults "
                  "WHERE UserId = :UserId "
                  "AND ModuleId = :ModuleId "
                  "ORDER BY ExerciseId ");
    query.bindValue(":UserId", QVariant(userId));
    query.bindValue(":ModuleId", QVariant(moduleId));
    query.exec();
« Последнее редактирование: Апрель 28, 2011, 11:21 от Drafter » Записан
anDROid
Гость
« Ответ #6 : Май 05, 2011, 10:48 »

Да,подключена,INSERT работает,а вот с селект такая трабла.

Проблему решил средствами QString
Записан
shirushizo
Гость
« Ответ #7 : Май 05, 2011, 11:19 »

Попробуйте:
1.Апострофы добавить.
qry.prepare( "SELECT value FROM settings WHERE name= ':name' " );
2. Заменить char* на QString
qry.bindValue(":name",QString("Start"));
Записан
anDROid
Гость
« Ответ #8 : Май 16, 2011, 13:20 »

Попробуйте:
1.Апострофы добавить.
qry.prepare( "SELECT value FROM settings WHERE name= ':name' " );
2. Заменить char* на QString
qry.bindValue(":name",QString("Start"));

Пробовал,не получается
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #9 : Май 16, 2011, 13:47 »

Цитировать
Апострофы добавить.
qry.prepare( "SELECT value FROM settings WHERE name= ':name' " );
Не нужно. Бинд их добавляет, если нужно.
Цитировать
qry.bindValue(":name", QVariant("Start"));
qry.bindValue(":name",QString("Start"));
Не нужно, хотя и не навредит.


Цитировать
Да,подключена,INSERT работает,а вот с селект такая трабла.
Попробуйте вот так: qry.prepare( "SELECT [value] FROM [settings] WHERE [name]=:name;" );
Если будет та же ошибка по очереди:
qry.prepare( "SELECT * FROM [settings] WHERE [name]=:name;" );
qry.prepare( "SELECT * FROM [settings]" ); - последнюю без бинда.
Если и это не сработает, проверяйте не опечатались ли где-нибудь в названии таблицы.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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