QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
if (!db.open()) {
QMessageBox::critical(0, qApp->tr("Cannot open database"),
qApp->tr("Unable to establish a database connection.\n"
"This example needs SQLite support. Please read "
"the Qt SQL driver documentation for information how "
"to build it.\n\n"
"Click Cancel to exit."), QMessageBox::Cancel);
}
QSqlQuery query;
query.exec("create table tags (artist text, "
"title text, "
"album text)");
QString tags("insert into tags values('Something', 'Something'Something', 'Something')");
query.exec(tags);
model = new QSqlRelationalTableModel(this);
model->setTable("tags");
model->select();
QTableView *view = new QTableView;
view->setModel(model);
view->resizeColumnsToContents();
view->resize(700,400);
view->show();Для экранирования воспользуйтесь символом \
Пробовал, не помогает.
Думал что нужно в Qt заэкранировать. Сейчас только что проверил на своей SQLite никаких проблем не имею с добавлением строки вида Something'Something
Добавляю через запрос вида
query.prepare("INSERT INTO [sometable] (NAME) VALUES (:name)");
query.bindValue(":name", "Something'Something");
Вообще-то, в SQL апостроф экранируется апострофом, то есть должно быть примерно так:
...
QString tags("insert into tags values('Something', 'Something''Something', 'Something')");
...query.prepare("INSERT INTO [sometable] (NAME) VALUES (:name)");
query.bindValue(":name", "Something'Something");INSERT INTO [sometable] (NAME) VALUES (:name)И тд.query.prepare("insert into tags values(artist, title, album) "
"VALUES (:artist, :title, :album)");
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)