qt-5数据库使用

 

文章目录

目录

前言

一、所需要的头文件

二、数据库操作

1.addDatabase的函数原型如下

2.连接数据库

3.创建数据库表

4.插入数据到表中

5.更新表中的数据

总结


 


前言

例如:qt-5 创建数据库,创建表以及对表的操作。


一、所需要的头文件

#include <QSqlDatabase>
#include <QSqlTableModel>
#include <QSqlQuery>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlRecord>

二、数据库操作

1.addDatabase的函数原型如下

[static] QSqlDatabase QSqlDatabase::addDatabase(
				const QString &type, 
				const QString &connectionName = QLatin1String( defaultConnection ))
//第一个参数为“驱动名称”
//第二个参数为“连接名”,默认是相同的

 

2.连接数据库

    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("card.db");//数据库名
    if(!db.open())
    {
        QMessageBox::critical(this,"提示","数据库打开失败   ");
        return;
    }
    QSqlQuery query(db);

3.创建数据库表

//操作记录表
    QString createTableQuery = "CREATE TABLE IF NOT EXISTS cardtable ("
                                   "cardNum VARCHAR(30) NOT NULL,"
                                   "stuNum VARCHAR(30) NOT NULL,"
                                   "chaozuo VARCHAR(30) NOT NULL,"
                                   "time DATETIME NOT NULL"
                                   ");";
    if(!query.exec(createTableQuery))
    {
        qDebug() << "创建失败";   return;
    }

    //数据记录表

    QString createTableQuery2 = "CREATE TABLE IF NOT EXISTS card ("
                                   "cardNum VARCHAR(30) PRIMARY KEY,"   //设置成主键
                                   "stuNum VARCHAR(30) NOT NULL,"
                                   "money INT NOT NULL"
                                   ");";
    if(!query.exec(createTableQuery2))
    {
        qDebug() << "创建失败2";   return;
    }

4.插入数据到表中

使用的表为上面创建的表:cardtable

    QString cardNum = "123456";
    QString stuNum = "123456";
    QString chaozuo = "123456";
    QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
    QString insert_sql = QString("INSERT INTO cardtable(cardNum, stuNum, chaozuo, time) "
                                          "VALUES('%1', '%2', '%3', '%4')")
                                 .arg(cardNum).arg(stuNum).arg(chaozuo).arg(time);
    query.exec(insert_sql);
    query.exec(insert_sql);
    query.exec(insert_sql);
    query.exec(insert_sql);
    if(!query.exec(insert_sql))
    {
        qDebug() << "插入失败  ";   return;
    }

5.更新表中的数据

使用的表为上面创建的表:card

//封装部分的打开数据库的指令
void Widget::open_database()
{
    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("card.db");
    if(!db.open())
    {
        QMessageBox::critical(this,"提示","数据库打开失败   ");
        return;
    }
}


open_database();
QSqlQuery query(db);
int money = ui->t2moneyEdit->text().toInt()+ui->t2balanceEdit->text().toInt();
QString cardNum = ui->t2cardEdit->text();
            QString sql = QString("UPDATE card SET money = %1 WHERE cardNum = '%2'").arg(money).arg(cardNum);
            // 执行 SQL 语句
            if (query.exec(sql)) {
                QMessageBox::about(this,"充值","充值成功   ");

                QString str = QString::number(money);
                ui->t2balanceEdit->setText(str);
                insert_data(ui->t2cardEdit->text(),ui->t2stuEdit->text(),"充值"+ui->t2moneyEdit->text()+"元");
            } else {
                qDebug() << "Update failed:" << query.lastError().text();
            }
            db.close();

6.清空表中的数据

使用的表为上面创建的表:cardtable

void Widget::on_pushButton_10_clicked()//清空记录表
{
    int nCount = ui->QdataView->rowCount();

    if(nCount>0)
    {
        ui->QdataView->clearContents();
    }
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("card.db");
    if(!db.open())
    {
        QMessageBox::critical(this,"提示","数据库打开失败   ");
        return;
    }
    QSqlQuery query;
    QString sql = "DELETE FROM cardtable";
    if(!query.exec(sql))
    {
         qDebug() << "Delete all data failed: " << query.lastError();
    }
}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了数据库的基本使用方法。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值