qt连接mysql实现增删改查语句_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 delRow;                                                                       //存储要删除的行

for(int i=0;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

{

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值