简言:Qt使用 QSqlTableModel也可以操作简单的表,而不再担心SQL语句是否出错,例子如下:
.h
//第二种连接办法
public:
QSqlTableModel *model;
void init2();
private slots:
//第二种连接办法
void ModelSelect();
void ModelDel();
void ModelEdit();
.cpp
void MainWindow::init2()
{
createDb();
connect(ui->pushButtonModelSelect,SIGNAL(clicked(bool)),this,SLOT(ModelSelect()));
connect(ui->pushButtonModelDel,SIGNAL(clicked(bool)),this,SLOT(ModelDel()));
connect(ui->pushbuttonModelEdit,SIGNAL(clicked(bool)),this,SLOT(ModelEdit()));
}
void MainWindow::ModelSelect()
{
model = new QSqlTableModel(this);
model->setTable("person");
//设置保存策略
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
//查询整张表
model->select();
ui->tableView->setModel(model);
}
void MainWindow::ModelDel()
{
//删除功能
int ret;
int curRow = ui->tableView->currentIndex().row();
model->removeRow(curRow);
ret = QMessageBox::information(NULL, "Title", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
if(ret == QMessageBox::No)
{
model->revertAll();
}
else
{
model->submitAll();
}
}
void MainWindow::ModelEdit()
{
model->database().transaction();
if(model->submitAll())
model->database().commit();
else
{
model->database().rollback();
QMessageBox::warning(this,"tableModel","数据库错误:"+tr("%1").arg(model->lastError().text()));
}
}
结果:可以完美实现表的select update del