Russian Qt Forum

Qt => Базы данных => Тема начата: Gomerd от Ноябрь 28, 2010, 13:29



Название: Sqlite и QHash
Отправлено: Gomerd от Ноябрь 28, 2010, 13:29
Доброго времени суток.
Есть кусок кода:
Код:
int a(lectt[ui->treeWidget->currentItem()->text(0)]);
        queryClear = new QSqlQuery(db);
        queryClear->exec("UPDATE lections "
                         "SET lectionname = '"+ui->lectionNameEdit->text()+"' "
                         "WHERE id_lections = '"+a+"' ");
        qDebug()<<queryClear->executedQuery();
        qDebug()<<queryClear->lastError();
        qDebug()<<a;


где lectt - QHash <QString, int> строка - название лекции. Инт, соотвественно, id.
В консоль выводит все корректно, нужный ид, а сам запрос выглядит в qDebug()

"UPDATE lections SET lectionname = 'testLection' WHERE id_lections = '☺'"
QSqlError(-1, "", "")
1

Ну и конечно никакого апдейта не происходит)
Кто-нибудь подскажет в чем дело?


Название: Re: Sqlite и QHash
Отправлено: crashsp от Ноябрь 28, 2010, 15:10
Честно сказать первый раз вижу такой подход в подстановки ),  коли в qDebug() выводиться все окей то дело с подстановкой попробуй так

queryClear->exec(tr("UPDATE lections  "
                             "SET lectionname = '%1'  "
                             "WHERE id_lections = %2  ").arg(ui->lectionNameEdit->text()).arg(a));

или так
queryClear.prepare(" UPDATE lections  "
                               "SET lectionname = ?  "
                                "WHERE id_lections = ?  ");
        queryClear.bindValue(0,ui->lectionNameEdit->text());
        queryClear.bindValue(1,a);
        queryClear.exec();


Название: Re: Sqlite и QHash
Отправлено: Gomerd от Ноябрь 28, 2010, 15:17
Пасиб, помогло, а такой способ подстановки я использовал в делфи, да и в текущем проекте на Qt у меня есть подобные вставки и все корректно вставляется, черт его знает в чем дело)