码迷,mamicode.com
首页 > 数据库 > 详细

qt 5 数据库操作(mysql)

时间:2015-10-27 21:45:17      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:

其实大家都知道,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();                    

}

 

 

持续更新,未完待续

 

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

 

qt 5 数据库操作(mysql)

标签:

原文地址:http://www.cnblogs.com/Ten10/p/Ten17.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!