21、Qt中mysql可视化操作
1、在操作数据库之前,需要先布局好界面,使用核心控件QTableView、按钮、行编辑进行布局,对数据库操作;实现增加、删除、确认、取消、搜索操作;
  
2、连接数据库、打开数据库、创建表格、表格中插入数据
// 连接数据库 db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("127.0.0.1"); db.setUserName("root"); db.setPassword("123456"); db.setDatabaseName("mydata"); // 打开数据库 if(!db.open()) { return; } // 批量插入数据 // oracle风格 // 站位符 :+自定义名字 QSqlQuery query; query.prepare("insert into student(name,age,score) values(:name,:age,:score)"); // 字段设置内容 QVariantList nameList; nameList<< "小白"<< "乐乐"<< "欢欢"<< "小夏"; QVariantList ageList; ageList << 43<< 45<< 44 << 23; QVariantList scoreList; scoreList << 56<< 75<< 84 << 70; // 字段绑定内容 与绑定顺序无关 query.bindValue(":name", nameList); query.bindValue(":score",scoreList ); query.bindValue(":age",ageList); // 执行预处理命令 query.execBatch();
3、将数据库中的数据与TableView关联起来
// 设置模型 model = new QSqlTableModel(this); model->setTable("student"); // mydata数据库中的student表格 // 把model放在view上面 ui->tableView->setModel(model); // 显示model里面的数据 model->select(); // 设置view显示的标题 model->setHeaderData(0,Qt::Horizontal,"学号"); // 设置model的编辑模式,手动提交修改 model->setEditStrategy(QSqlTableModel::OnManualSubmit); // 不允许修改view中的数据库不允许修改 //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
4、按钮选项槽函数实现,这里我们增加数据后需要按下确认按钮完成增加数据功能,如果按下取消后,数据增加失败;删除数据也同样操作;
1、增加数据槽函数实现:
void Widget::on_btnAdd_clicked() { // 添加空记录 QSqlRecord record = model->record(); // 获取空记录 // 获取行号 int row = model->rowCount(); // 获取总行数 可选择多行数据 model->insertRecord(row, record); }
2、确定按钮选项:
void Widget::on_btnSure_clicked() { model->submitAll(); // 提交所有动作 }
3、取消动作槽函数
void Widget::on_btnCancel_clicked() { model->revertAll(); // 取消所有动作 model->submitAll(); // 提交所有动作 }
4、删除动作槽函数
void Widget::on_btnDel_clicked() { // 获取选中的模型 QItemSelectionModel *sModel = ui->tableView->selectionModel(); // 取出来模型中的索引 QModelIndexList list = sModel->selectedRows(); // 删除所有选中的行 for(int i=0;i<list.size();i++) { model->removeRow(list.at(i).row()); // 删除一行数据 } }
5、查找动作槽函数
void Widget::on_btnFind_clicked() { QString name = ui->lineEdit->text(); QString str = QString("name = '%1'").arg(name); model->setFilter(str); // 设置过滤条件 model->select(); // 选中过滤后的 }
5、需要用到的几个类
#include <QSqlDatabase> // 添加数据库 #include <QSqlTableModel> // 数据库显示模型 #include <QSqlQuery> // 操作数据库接口 #include <QSqlRecord> // 插入数据记录的类 QSqlDatabase db; QSqlTableModel *model; // 用于显示模块
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号