#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();
}