Qt/qt creator操作sqlite数据库的基本使用

SQLite简介

SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足、无服务器、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,这就体现出来SQLite与其他数据库的最大的区别:SQLite不需要在系统中配置,直接可以使用。且SQLite不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite可直接访问其存储文件。

SQLite对于其他数据库有什么优势:

  • 不需要配置,不需要安装和管理

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)

  • 一个完整的SQLite数据库存储在一个单一的跨平台的磁盘文件上

  • SQLite是非常小的,轻量级的数据库,完全配置时小于400KiB,省略可选功能配置时小于250KiB

  • SQLite是一个自给自足的数据库,这也就意味着不需要任何外部的依赖

Qt中的实际使用

首先在项目中的后缀为.pro文件中加入QT       += sql //数据库模块


接着在要使用的.h文件中加入一下头文件

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



然后就可以使用sql的接口函数了

为了方便多个文件调用使用访问数据库,可以对数据库的使用进行封装:

第一步:
    方法一:创建或打开数据库
bool MainWindow::create_open_database()
{
    //数据库类型QSQLITE  
    db=QSqlDatabase::addDatabase("QSQLITE");
   //设备编号-“easybook-3313b0”
    db.setHostName("easybook-3313b0");
   //数据库的文件名字
    db.setDatabaseName("MyDataBase.db");
  //数据库用户名
    db.setUserName("jons");
  //数据库密码
    db.setPassword("123123");
   //判断是否成功打开
    if(!db.open())
    {
        qDebug()<<"open database is error!";
        return false;

    }else
        return true;
}
方法二:创建或打开数据库
bool MainWindow::create_open_database()
{
     if (QSqlDatabase::contains("easybook-3313b0"))
     {
     db = QSqlDatabase::database("easybook-3313b0");
     }
     else
     {
     //建立和SQlite数据库的连接
    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setHostName("easybook-3313b0");
    //设置数据库文件的名字
    db.setDatabaseName("MyDataBase.db");
    db.setUserName("jons");
    db.setPassword("123123");
    }
    if(!db.open())
    {
        qDebug()<<"open database is error!";
        return false;

    }else
        return true;
}
第二步:创建数据库中的表
bool MainWindow::create_tabel()
{
    QSqlQuery query(db);
    bool success = query.exec("create table student(id int primary key,name varchar,sex varchar,address int)");
    if(success)
        qDebug()<<"create  student tabel is success!";
    else
        qDebug()<<"create  student tabel is error!";
    query.exec("select * from student");
    QSqlRecord rec = query.record();
    qDebug()<<"student 的表字段数"<<rec.count();
}
第三步:数据库的基本操作,增删改查
//插入:
bool MainWindow::insert_data()
{
    bool success;
    QSqlQuery query(db);
    query.prepare("insert into student values(?,?,?,?)");
    query.bindValue(0,select_tablecount());
    query.bindValue(1,ui->lineEdit->text());
    query.bindValue(2,ui->lineEdit_2->text());
    query.bindValue(3,ui->lineEdit_3->text());
    success=query.exec();
    if(success)
        qDebug()<<"insert  student msg is success!";
    else
        qDebug()<<"insert  student msg is error!"<<query.lastError().driverText();
}
//删除:
bool MainWindow::detele_tablemag()
{
    QSqlQuery query(db);
    query.exec(QString("delete from student where address=%1" ).arg(ui->lineEdit_5->text()));
    if(!query.exec())
        qDebug()<<"delete  student msg is error!"<<query.lastError();
    else
        qDebug()<<"delete  student msg is success";
}

//修改:
bool MainWindow::update_tablemsg()
{
    bool success;
    QSqlQuery query(db);
    query.prepare(QString("update student set name=?,sex=?,address=? where address =%1").arg(ui->lineEdit_4->text()));
    query.bindValue(0,ui->lineEdit->text());
    query.bindValue(1,ui->lineEdit_2->text());
    query.bindValue(2,ui->lineEdit_3->text());
    success=query.exec();
    if(success)
        qDebug()<<"update  student msg is success!";
    else
        qDebug()<<"update  student msg is error!"<<query.lastError().driverText();
}
//查询:
bool MainWindow::select_tablemsg()
{
    QSqlQuery query(db);
    query.exec("select * from student");
    if(!query.exec())
        qDebug()<<"select  student msg is error!"<<query.lastError();
    else
    {
        while(query.next())
        {
            int id =query.value(0).toInt();
            QString name=query.value(1).toString();
            QString sex=query.value(2).toString();
            int address=query.value(3).toInt();
            ui->listWidget->addItem(QString("id%1  name:%2  sex:%3 address%4").arg(id).arg(name).arg(sex).arg(address));
        }
    }
//其他:
//排序:
bool MainWindow::table_sort()
{
    QSqlQuery query(db);
    query.exec("select * from student order by id desc");
}
//查询数据表的行数:
int MainWindow::select_tablecount()
{
    int count=0;
    QSqlQuery query(db);
    query.exec("select * from student");
    if(!query.exec())
    {
        qDebug()<<"select  student msg is error!"<<query.lastError();
    }
    else
    {
        while(query.next())
        {
            count++;
        }
    }
    return count;
}

案例截图:

最后:案例源码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值