Qt中MySQL的使用实例以及数据库遍历

62 篇文章 104 订阅
6 篇文章 1 订阅

1、连接数据库

    QSqlDatabase db;
    //需要进行判断默认的连接名是否存在,
    //如果不存在才使用addDatabase()方法,如果存在则使用database()方法
    if(QSqlDatabase::contains("qt_sql_default_connection"))
        db = QSqlDatabase::database("qt_sql_default_connection");
    else
        db = QSqlDatabase::addDatabase("QMYSQL");
    //连接数据库
    db.setHostName("127.0.0.1"); //数据库服务器IP
    db.setUserName("root");//用户名
    db.setPassword("000000");//密码
    db.setDatabaseName("ycf");//使用的数据库
    qDebug()<<"DatabaseConnect";
    //打开数据库
    if(!db.open())//数据库打开失败
        {
        QMessageBox::warning(this,"错误",db.lastError().text());
        return;
    }

2、执行sql语句

QSqlQuery query;
QString sql_temp = QString("update tempdata set time = '%1',ion = %2,temperature = %3, humidity = %4 where num = 1")
                       .arg(current_date)
                       .arg(ion)
                       .arg(temperature)
                       .arg(humidity); 
//执行sql语句并判断执行结果
if(!query.exec(sql_temp))
{
QSqlError lastError = query.lastError();
qDebug()<<lastError.driverText()<<QString(QObject::tr("UpDate failed!"));
return false;
                } 
//遍历数据库:
        QSqlQuery query;
        //组包
        QString sql = QString("select temperature,humidity from data where num like '%' ");
        //执行SQL语句
        query.exec(sql);
        //获取内容
        while(query.next())
        {
         QString temperature = query.value(0).toString();
         QString  humidity= query.value(1).toString();
         qDebug()<<temperature<<endl;
         qDebug()<<humidity<<endl;
        }
//遍历数据库 
    QSqlQuery query;
    query.exec("select * from users");
    //指向第二条记录
    query.seek(1);   
    //获取当前行的记录                                                   
    QSqlRecord record = query.record();
    //获取字段中记录的值
    QString id = record.value("ID").toString();
    QString name = record.value("name").toString();
    qDebug()<<"name:"<<name;

3、使用数据模型

  //新建数据查询模型
  QSqlQueryModel *queryModel = new QSqlQueryModel(this);
  //sql语句
  queryModel->setQuery("select name from factory");
  //将数据库数据读入下拉框
   ui->comboBoxFactory->setModel(queryModel); 

 //设置表格模型
    model = new QSqlTableModel(this);
    //指定使用的表
    model->setTable("brand");
    //将model放入view中
    ui->tableView->setModel(model);
    //显示model里面的数据
    model->select();
    //设定视图第一行内容,不改变数据库
    model->setHeaderData(0,Qt::Horizontal,"序号");
    model->setHeaderData(1,Qt::Horizontal,"品牌");
    model->setHeaderData(2,Qt::Horizontal,"型号");
    model->setHeaderData(3,Qt::Horizontal,"价格");
    model->setHeaderData(4,Qt::Horizontal,"总量");
    model->setHeaderData(5,Qt::Horizontal,"售出");
    model->setHeaderData(6,Qt::Horizontal,"剩余");

    //设置model编辑模式为手动提交
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);

4、相关头文件

#include <QSqlQuery>//执行sql语句相关
#include <QSqlDatabase>//连接数据库相关
#include <QSqlError>//数据库错误相关 
#include <QSqlRecord>//数据库记录相关 
#include <QSqlQueryModel>//数据查询模型
  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值