zoukankan      html  css  js  c++  java
  • qt 5 数据库操作(mysql)

    其实大家都知道,QT5以上的都自带了数据库驱动,所以呢,基本上可以直接使用,于是如果想知道怎么连接数据库,请参考这位大神写的。http://qtdebug.com/DB-AccessMySQL.html

    关于数据库操作

    QSqlDatabase db = QSqldatabase::addDataBase("QMYSQL"); //博主用的mysql

    db.setHostName("127.0.0.1");                                             //本机地址

    db.setDatabaseName("qt");                     //我在mysql里面创建了一个叫qt的数据库

    db.setUserName("root");                         //账号

    db.setPassword("59826****");                //密码

    if(!db.open())

    {

    qDebug()<<"打开数据库失败";

    }

    qDebug()<<"连接成功";

    关于数据库显示在表格中

    QTableView *_view = new QTableView;

    QSqlTableModel *_model = new QSqlTableModel;

    QVBoxLayout *lay = new QVBoxLayout(this);

    _model->setTable("user");         //数据库中的表格名称

    _model->selection();                 //选择表中所有的数据

    _view->setModel(_model);        //把_model传给_view

     lay->addWidget(_view);           //增加一个空间到QVBoxLayout并且显示

      增删改查

      void slotAddClicked()

     {

       _model->database().transaction();               //开始事物

       QSqlRecord record = _model -> record();     // 用_model来获取记录(行)

       _model -> insertRecord(-1,record);             //增加到最后一行一个记录

     }

    void slotSubmitClicked()

    {

           if(_model->submitAll())   

           _model->database().commit();             //提交

           else

          {

           _model->database().rollback();           //回滚

          QMessageBox::critical(this,"Error",QSqldatabase().lastError.text());

           }

    }

     void slotDelClicked()

    {

       QItemSelectionModel  * selectModel=view->selectionModel();         //通过view来获取选中的部分数据model

       QModelIndexList  selectIndexList = selectModel->selectedIndexs();  // 通过selectModel来获取被选中的索引(index)

       QList<int> delRow;                                                                       //存储要删除的行

       for(int i=0;i<selectIndexList.size(); ++i)                                        // 遍历选择的列表

       {

              QModelIndex index = selectIndexList.at(i);                                //将列表转化为单个的Index

              delRow << index.row();                                                           // 将index对应的行加入delRow

       } 

       while(delRow.size()>0)

       {

           int row = delRow.at(0);

           delRow.removeAll(row);                                                               // 移除所有相同的行,去重

           model->removeRow(row);                                                           // 移除该行

       }

          model->submitAll();                    

    }

    void slotFilter(QString filter)

    {

       QSqlRecord record = model -> record();                                   //获取所有记录

       QString modelFilter;                                                       //总的筛选条件  xx like xx or xxx like xxx这种形式的字符串

       if(filter.isEmpty)

       {

        model->setFilter(" ");

        model->select();

        return;

       }

       for(int i=0;i<record.count();++i)

       {

         if(i!=0)

        {

         modelFilter +="or";

        }

         QString field = record.field(i);                                        // 将每行字段里面的内容都放进去

         QString subFilter = QString().sprintf("%s like '%%%s%%'",field.toUtf8().data(),filter.toUtf8().data());

         modelFilter +=subFilter

       }

       model ->setFilter(modelFilter);                                        //过滤

       model->select();                                                            //刷新

    }

    作者 : Ten10

    持续更新,未完待续

    本文章属于作者原创,如需转载请注明  http://i.cnblogs.com/EditPosts.aspx?opt=1

  • 相关阅读:
    使用 mesh 实现多边形裁剪图片!Cocos Creator!
    如何实现高抛平抛发射?从抛物线说起!Cocos Creator!
    用 shader effect 实现雨滴落水效果!Cocos Creator 3D !
    反复横跳的瞄准线!从向量计算说起!基于射线检测的实现!Cocos Creator!
    爬取网易云音乐评论!python 爬虫入门实战(六)selenium 入门!
    浅析射线检测 raycast 的使用 !Cocos Creator 3D !
    用 python 分析基金!让赚钱赢在起跑线!
    cocos creator 3D | 拇指投篮 | 3D项目入门实战
    GA/T 1545-2019 信息安全技术 智能密码钥匙安全技术要求
    GA/T 1539-2018 信息安全技术 网络病毒监控系统安全技术要求和测试评价方法
  • 原文地址:https://www.cnblogs.com/Ten10/p/Ten17.html
Copyright © 2011-2022 走看看