小工具知识网

当前位置: 首页 > 行业知识 > Qt SQLite的创建和使用

行业知识

Qt SQLite的创建和使用

2026-10-19 05:19:00 来源:互联网转载

���点:

1.SQLite创建数据库内容方法

链接:SQLite Expert Personal的简单使用-CSDN博客

2.和数据库进行链接方法

QSqlDatabase  DB;//数据库连接bool MainWindow::openDatabase(QString aFile){    DB=QSqlDatabase::addDatabase("QSQLITE");//添加 SQLITE数据库驱动    DB.setDatabaseName(aFile);//设置数据库名称    if (!DB.open())     //打开数据库失败        return false;    else    {        openTable();//打开数据表        return true;    }}

 3.QTableView和QSqltableModedl、QItemSelectionModel关系

/打开数据表void MainWindow::openTable(){    //1. 创建数据模型,打开数据表    tabModel=new QSqlTableModel(this,DB);//数据模型    tabModel->setTable("employee");//设置数据表    tabModel->setEditStrategy(QSqlTableModel::OnManualSubmit);//数据保存方式,OnManualSubmit , OnRowChange    tabModel->setSort(tabModel->fieldIndex("empNo"),Qt::AscendingOrder); //排序    if (!(tabModel->select()))//查询数据失败    {        QMessageBox::critical(this, "错误信息",                              "打开数据表错误,错误信息:\n"+tabModel->lastError().text());        return;    }    showRecordCount();      //显示记录条数    //2. 设置字段显示标题    tabModel->setHeaderData(tabModel->fieldIndex("empNo"),  Qt::Horizontal, "工号");    tabModel->setHeaderData(tabModel->fieldIndex("Name"),   Qt::Horizontal, "姓名");    tabModel->setHeaderData(tabModel->fieldIndex("Gender"), Qt::Horizontal, "性别");    tabModel->setHeaderData(tabModel->fieldIndex("Birthday"),   Qt::Horizontal, "出生日期");    tabModel->setHeaderData(tabModel->fieldIndex("Province"),   Qt::Horizontal, "省份");    tabModel->setHeaderData(tabModel->fieldIndex("Department"), Qt::Horizontal, "部门");    tabModel->setHeaderData(tabModel->fieldIndex("Salary"), Qt::Horizontal, "工资");    //这两个字段不在tableView中显示    tabModel->setHeaderData(tabModel->fieldIndex("Memo"),Qt::Horizontal,"备注");    tabModel->setHeaderData(tabModel->fieldIndex("Photo"),Qt::Horizontal,"照片");    //3. 创建选择模型    selModel=new QItemSelectionModel(tabModel,this);//关联选择模型    //当前行或列变化时发射currentChanged信号    connect(selModel,&QItemSelectionModel::currentChanged,            this,&MainWindow::do_currentChanged);    //当前行变化时发射currentRowChanged()信号    connect(selModel,&QItemSelectionModel::currentRowChanged,            this,&MainWindow::do_currentRowChanged);    //4. Model/View结构    ui->tableView->setModel(tabModel);//设置数据模型    ui->tableView->setSelectionModel(selModel); //设置选择模型    ui->tableView->setColumnHidden(tabModel->fieldIndex("Memo"),true);//隐藏列    ui->tableView->setColumnHidden(tabModel->fieldIndex("Photo"),true);//隐藏列    //5. 为tableView中的“性别”和“部门”两个字段设置自定义代理组件    QStringList strList;    strListaddMapping(ui->dbEditName,tabModel->fieldIndex("Name"));    dataMapper->addMapping(ui->dbComboSex,tabModel->fieldIndex("Gender"));    dataMapper->addMapping(ui->dbEditBirth,tabModel->fieldIndex("Birthday"));    dataMapper->addMapping(ui->dbComboProvince,tabModel->fieldIndex("Province"));    dataMapper->addMapping(ui->dbComboDep,tabModel->fieldIndex("Department"));    dataMapper->addMapping(ui->dbSpinSalary,tabModel->fieldIndex("Salary"));    dataMapper->addMapping(ui->dbEditMemo,tabModel->fieldIndex("Memo"));    dataMapper->toFirst();  //移动到首记录    //7. 获取字段名称列表,填充groupBoxSort    getFieldNames();    //8.更新actions和界面组件的使能状态    ui->actOpenDB->setEnabled(false);//不能再打开数据库    ui->actRecAppend->setEnabled(true);    ui->actRecInsert->setEnabled(true);    ui->actRecDelete->setEnabled(true);    ui->actScan->setEnabled(true);    ui->groupBoxSort->setEnabled(true);//"排序"分租框    ui->groupBoxFilter->setEnabled(true);//"数据过滤"分组框}

上一篇:天津市楼盘备案查询系统

下一篇:揭秘PHP英文网站源码,轻松实现网站搭建速成秘籍!