QT数数据库Mysql中 QSqlQuery、QSqlQueryModel 、和QSqlTableModel实现增删改查?代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT数数据库Mysql中 QSqlQuery、QSqlQueryModel 、和QSqlTableModel实现增删改查?代码相关的知识,希望对你有一定的参考价值。
数据库驱动:QSQLITE
数据库:diancai.db
数据表:caipin
用qsqltablemodel的insetrow()、setdata()、submitall()函数实现增;
officeTable->insertRow(0);
officeTable->setData(officeTable->index(0, 0), row);
officeTable->setData(officeTable->index(0, 1), newWnd->imageFileEditor->currentIndex());
officeTable->setData(officeTable->index(0, 2), newWnd->locationText->text());
officeTable->setData(officeTable->index(0, 3), newWnd->countryText->currentText());
officeTable->setData(officeTable->index(0, 4), newWnd->descriptionEditor->toPlainText());
officeTable->submitAll();
用removerow()、submitall()函数实现删;
int officeCount = officeTable->rowCount();
officeTable->removeRow(id);
for(int i = id; i < officeCount - 1;i++)
officeTable->setData(officeTable->index(i, 0), i);
officeTable->submitAll();
用QSqlRecord类的setvalue实现改;
QSqlRecord recordCurrentRow = officeTable->record(id);
recordCurrentRow.setValue("id", id - 1);
officeTable->setRecord(id - 1, recordCurrentRow);
officeTable->submitAll();
用QSqlRecord类的.value进行比较实现查;
int Dialog::findArtistId(const QString &artist)
QSqlTableModel *artistModel = model->relationModel(2);
int row = 0;
while (row < artistModel->rowCount())
QSqlRecord record = artistModel->record(row);
if (record.value("artist") == artist)
return record.value("id").toInt();
else
row++;
return addNewArtist(artist);
参考技术A 最好的方法是看帮助文档,安装个SDK包含QT Creator的,里面有详细的介绍和例子
QSqlQuery最后无法正常工作
我试图在SQLite中获取已执行查询的大小,但是当我使用last并尝试使用last时,它始终为false 这是我正在尝试执行的代码
void createDB() {
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","CREATE_CON");
db.setDatabaseName("C:/Desktop/TestDb.db3");
db.open();
QSqlQuery q(db);
q.exec("CREATE TABLE IF NOT EXISTS Test(testCol TEXT PRIMARY KEY);");
}
int entries() {
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","SELECT_CON");
db.setDatabaseName("C:/Desktop/TestDb.db3");
db.open();
QSqlQuery q(db);
q.exec("SELECT * FROM Test;");
if(q.last() == false) {
qDebug()<<q.lastError().text();
qDebug()<<db.lastError().text();
}
return q.at()+1;
}
我得到的错误文本是空的,所以我不知道我做错了什么。 我可以很好地创建数据库,以便我的数据库实例正常工作。 操作系统:Windows 10 我正在使用:Qt 5.10.1 Compilator:MinGW
以上是关于QT数数据库Mysql中 QSqlQuery、QSqlQueryModel 、和QSqlTableModel实现增删改查?代码的主要内容,如果未能解决你的问题,请参考以下文章
在vs中,qt连接mysql运行时,出现QSqlQuery::exec:database not open,如何解决
Modle/View/Delegate框架+QSqlQuery类实现QT和MYSQL交互
qt : QSqlQuery 返回 QVariant 的向量