qsql 关联_(十八)链接数据库,QSqlTableModel

#include "mysql.h"#include"ui_mysql.h"#include#include#include#include#includeMySql::MySql(QWidget*parent) :

QWidget(parent),

ui(newUi::MySql)

{

ui->setupUi(this);//添加一个mysql数据库

qDebug() <<:drivers>

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");//设置数据库

db.setHostName("127.0.0.1"); //主机IP

db.setUserName("root"); //登录mysql数据库的用户名

db.setPassword("123456"); //登录密码

db.setDatabaseName("books"); //连接的数据库名//打开数据库

if(db.open() == false)

{

QMessageBox::warning(this, "warning", db.lastError().text());

}//增删查改 ...//添加一条记录

QSqlQuery query;

QString sql= "insert into app_authors(name,age) values('vincent',100)";

query.exec(sql);//预处理//? -- 通配符, odbc风格的通配符

query.prepare("insert into app_authors(name,age) values(?,?)");//添加绑定数据

QVariantList nameList;

nameList<< "aa" << "bb" << "cc";

query.addBindValue(nameList);

QVariantList ageList;

ageList<< 11 << 54 << 88;

query.addBindValue(ageList);//执行批处理

query.execBatch();//oracle 风格的通配符//定义方式: :+自定义的名字

query.prepare("insert into app_authors(name, age) values(:name, :age)");

QVariantList ageList;

ageList<< 111 << 52 << 82;

query.bindValue(":age",ageList);

QVariantList nameList;

nameList<< "hh" << "ff" << "gg";

query.bindValue(":name",nameList);

query.execBatch();//数据查询

query.exec("select name, age from app_authors");while(query.next()) { //遍历每一条记录

qDebug() << query.value(0).toString().toUtf8().data() // //0 -- 第一个字段的索引

<< query.value(1).toInt()<< query.value("name").toString().toUtf8().data();

}//1. 实例化model

model = new QSqlTableModel(this);//2. 将模型设置到视图中

ui->tableView->setModel(model);//3. 给model设置数据库表 -- 前提条件: 数据库已经打开了

model->setTable("app_authors");//4. 查询表

model->select();//5. 设置表头

model->setHeaderData(0, Qt::Horizontal, "编号");

model->setHeaderData(1,Qt::Horizontal,"姓名");

model->setHeaderData(2,Qt::Horizontal,"年龄");

model->setEditStrategy(QSqlTableModel::OnManualSubmit);

}

MySql::~MySql()

{deleteui;

}voidMySql::on_submit_clicked()

{

model->submitAll();

}voidMySql::on_revert_clicked()

{

model->revertAll(); //撤销步骤

model->submitAll(); //提交步骤 -- 更新数据模型 model->select();

}voidMySql::on_search_clicked()

{

QString name= ui->lineEdit->text();//slect * from aa where name = 'xiaoming';//设置过滤条件

QString sql = QString("name='%1'").arg(name);

model->setFilter(sql);//重新查询

model->select();

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值