QSqlDatabase-QMySQL

流程图:

 myWidget.cpp

#include "mywidget.h"
#include "ui_mywidget.h"
#include<QDebug>
#include<QSqlDatabase>//数据库
#include<QMessageBox>
#include<QSqlError>//sql错误信息
#include<QSqlQuery>//sql语句类
#include<QVariantList>//泛型
MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::MyWidget)
{
    ui->setupUi(this);
    //打印Qt支持的数据库驱动
    qDebug()<<QSqlDatabase::drivers();
    //添加MySql数据库
    //只连接一个数据库,addDatabase第二个参数不用写
    QSqlDatabase db= QSqlDatabase::addDatabase("QMYSQL");
    //链接数据库
    db.setHostName("127.0.0.1");//数据库服务器IP
    db.setUserName("root");//数据库用户名
    db.setPassword("root");//数据库密码
    db.setDatabaseName("dbtest1");//使用那个数据库
    //打开数据库
    if(db.open()==false)
    {
        QMessageBox::information(this,"失败",db.lastError().text());
        return;
    }

#if 0
    //创建表
    QSqlQuery query;
    query.exec("create table student(id int primary key auto_increment,name varchar(255),age int,score int)");
    //表内插入数据
    QSqlQuery query;
    query.exec("insert into student(id,name,age,score)values(2,'zx',18,60)");
#endif

#if 0
    //添加MySql数据库
    //如果要连接两个数据库,addDatabase第二个参数随便写,初始化时要传参QSqlQuery query1(db1)
    QSqlDatabase db1= QSqlDatabase::addDatabase("QMYSQL","a");
    //链接数据库
    db1.setHostName("127.0.0.1");//数据库服务器IP
    db1.setUserName("root");//数据库用户名
    db1.setPassword("root");//数据库密码
    db1.setDatabaseName("dbtest2");//使用那个数据库
    //打开数据库
    if(db1.open()==false)
    {
        QMessageBox::information(this,"失败",db1.lastError().text());
        return;
    }

    QSqlQuery query1(db1);
    query1.exec("create table student(id int primary key,name varchar(255),age int,score int)");
#endif

#if 0
    //批量插入
    //odbc风格
    //预处理语句  ? 相当于占位符
    query.prepare("insert into student(id,name,age,score)values(?,?,?,?)");
    //给字段设置内容 list
    QVariantList idlist;
    idlist<<8<<9<<10;
    QVariantList namelist;
    namelist<<"xiaoming"<<"xiaolong"<<"xiaojiang";
    QVariantList agelist;
    agelist<<11<<28<<33;
    QVariantList scorelist;
    scorelist<<59<<60<<65;
    //给字段绑定相应的值
    query.addBindValue(idlist);
    query.addBindValue(namelist);
    query.addBindValue(agelist);
    query.addBindValue(scorelist);
    //执行预处理命令
    query.execBatch();
#endif

#if 0
    //oracle风格
    //占位符 :+自定义名字
    query.prepare("insert into student(id,name,age,score) values(:id,:name,:age,:score)") ;
    //给字段设置内容
    QVariantList idlist ;
    idlist<<8<<9<<10 ;
    QVariantList nameList ;
    nameList <<"小红"<<"小绿"<< "小蓝" ;
    QVariantList ageList ;
    ageList <<31<<31<<32 ;
    QVariantList scoreList ;
    scoreList<< 44 << 44 << 44 ;
    //给字段绑定
    query.bindValue(":id",idlist);
    query.bindValue(":name",nameList);
    query.bindValue(":age",ageList);
    query.bindValue(":score",scoreList);
    //执行预处理命令
    query.execBatch();
#endif
}

MyWidget::~MyWidget()
{
    delete ui;
}


//删除
void MyWidget::on_buttondelete_clicked()
{
    //获取行编辑内容
    QString name= ui->lineEdit->text();
    QString str=QString("delete from student where name='%1'").arg(name);

#if 1
    //第一种开启事物方法
    QSqlDatabase::database().transaction();//获取当前操作数据库
    QSqlQuery query;
    query.exec(str);
#endif

#if 0
    //第二种开启事物方法
    QSqlDatabase db=QSqlDatabase::database();
    if(db.isOpen()==true)
    {
        qDebug()<<"数据库打开";
        db.exec("START TRANSACTION;");
    }
#endif

#if 0
    //第三种开启事物方法
    QSqlQuery query;
    query.exec("START TRANSACTION");
    query.exec(str);
#endif

}
//确定删除
void MyWidget::on_buttonsure_clicked()
{

#if 1
    //第一种确定方法
    QSqlDatabase::database().commit();
#endif

#if 0
    //第二种确定方法
    QSqlDatabase db=QSqlDatabase::database();
    if(db.isOpen()==true)
    {
        qDebug()<<"确定删除";
        db.exec("commit;");
    }
#endif

#if 0
    //第三种确定方法
    QSqlQuery query;
    query.exec("COMMIT");
#endif
}
//取消删除,回滚撤销
void MyWidget::on_buttoncancel_clicked()
{
#if 1
    //第一种取消方法
    QSqlDatabase::database().rollback();
#endif

#if 0
    //第二种取消方法
    QSqlDatabase db=QSqlDatabase::database();
    if(db.isOpen()==true)
    {
        qDebug()<<"取消删除";
        db.exec("rollback;");
    }
#endif

#if 0
    //第三种取消方法
    QSqlQuery query;
    query.exec("ROLLBACK");
#endif
}

//查找
void MyWidget::on_pushButton_clicked()
{
    //查找
    QSqlQuery query;
    query.exec("select * from student where id<1006");
    //一行一行遍历
    while(query.next())
    {
        //取出当前行内容
        qDebug()<<query.value(0).toInt()
                <<query.value(1).toString()
                <<query.value("age").toInt()
                <<query.value("score").toInt();
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值