Qt数据库常用操作(二)

1、多个筛选条件

select *from orderform where name = '%1' and age = '%2'"

2、多个更新内容

update orderform set class = '%1',score = '%2' where name = '%3' and age= '%4'"

3、事务操作

db.transaction() // 开始事务操作
db.commit()      //提交
db.rollback()     //回滚

4、查询筛选条件的个数

QString str_select = QString("select count(*) from orderform where name= '%1' and age= '%2'").arg(name).arg(age);
if(query.exec(str_select)){
        if(query.next())
            select_count = query.value(0).toInt();
}

5、查询整个表的个数

QString str_select = QString("select count(*) from orderform");
if(query.exec(str_select)){
        if(query.next())
            select_count = query.value(0).toInt();
}

5、打开多个数据库

/* 新增一个主主数据库,指定连接名字"main" */
QSqlDatabase main_db = QSqlDatabase::addDatabase("QSQLITE","main");
/* 新增一个历史数据库,指定连接名字"history" */
QSqlDatabase history_db = QSqlDatabase::addDatabase("QSQLITE","history");
/* 构建QSqlQuery,指定连接名字,即可操作main的数据库 */ 
QSqlQuery query_main(QSqlDatabase::database("main", true));
/* 构建QSqlQuery,指定连接名字,即可操作history的数据库 */
QSqlQuery query_history(QSqlDatabase::database("history", true));

6、QSqlDatabasePrivate::removeDatabase: connection 'xxx' is still in use

只要你在脱离了此数据库的作用域之后再调用QSqlDatabase::removeDatabase("xxx")即可;
例如:
{
    QSqlDatabase history_db = QSqlDatabase::addDatabase("QSQLITE","history");
    history_db.close();
}
QSqlDatabase::removeDatabase("history");

7、连接到QTableView

QSqlDatabase db = QSqlDatabase::database("main");
if(db.open()){
    QSqlQueryModel *model = new QSqlQueryModel(ui->tableView);
    model->setQuery("select *from orderform",db);
    ui->tableView->setModel(model);
}

 

你可能感兴趣的:(Qt)