qt sqlite数据库操作功能

本文详细介绍使用Qt操作SQLite数据库的方法,包括数据库初始化、读取和写入数据的步骤。通过实例展示如何创建数据库连接,初始化数据库表,以及如何从数据库中读取和更新数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、初始化

1、qt操作sqlite数据库,先要进行判断数据库文件有没有存在,如存在,则直接连接数据库。如果不存在,则新建一个,下面为main函数

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //数据库操作
    bool create = !QFile::exists("para.dat");

    if(true == createConnection())        //数据库不存在  则重新初始化并启用数据库
    {
        if (create)
        {
           createParaData();
        }
    }
    //界面显示
    MainFrame w;
    w.show();

    return a.exec();
}

2、接下来是main里面引用的2个子函数的详细内容

//连接数据库文件
bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

    db.setDatabaseName("para.dat");

    if (!db.open()) {

        QMessageBox::warning(0, QObject::tr("获取数据库信息失败,已恢复默认值..."),
                             db.lastError().text());
        return false;

    }
    return true;
}

//数据库初始化
void createParaData()
{
    QSqlQuery query;
    query.exec("DROP TABLE para");
    query.exec("CREATE TABLE para ("
                "id INTEGER     PRIMARY KEY AUTOINCREMENT,"
                "sourceDir      VARCHAR(260) NOT NULL,"
                "genearteDir    VARCHAR(260) NOT NULL,"
                "DataHour       VARCHAR(10) NOT NULL,"
                "DataMinute     VARCHAR(10) NOT NULL)");

    query.exec("INSERT INTO para(sourceDir,genearteDir,DataHour,DataMinute)"
                "VALUES ('./','./','8','0')");
}

好了,以上初始化完成。该demo数据库,由一个para表,该表有5个参数,id,sourceDir,generateDir,DataHour,DataMiunte构成,本处已经赋了初始值 

 

二、数据库读取

读取可以放到构造函数内去读  一般只读一次。如下例程。将读到的数据库的内容,放到我自己配置的结构体内

//读取数据库配置
    QSqlTableModel model_para;
    model_para.setTable("para");
    model_para.select();

    QSqlRecord record_para = model_para.record(0);      //第一行数据

    File_Source.File_Dir_Avaliable = true;
    File_Source.File_Dir = record_para.value("sourceDir").toString();
    File_Generate.File_Dir_Avaliable = true;
    File_Source.File_Dir = record_para.value("generateDir").toString();

    Save_Time.Hour = record_para.value("DataHour").toUInt();
    Save_Time.Min = record_para.value("DataMinute").toUInt();


    ui->comboBox_Hour->setCurrentText(QString::number(Save_Time.Hour));
    ui->comboBox_Minute->setCurrentText(QString::number(Save_Time.Min));

三、数据库写值

写值可由按键或其它触发,由下函数所示,本次是由按键触发

    //设置数据库内容
    QSqlTableModel model_para;
    model_para.setTable("para");
    model_para.select();

    QSqlRecord record_para = model_para.record(0);

    record_para.setValue("sourceDir",File_Source.File_Dir);
    record_para.setValue("generateDir",File_Generate.File_Dir);
    record_para.setValue("DataHour",ui->comboBox_Hour->currentText());
    record_para.setValue("DataMinute",ui->comboBox_Minute->currentText());

    model_para.setRecord(0,record_para);
    model_para.submitAll();

    QMessageBox::information(this,"提示","参数保存成功!!!",QMessageBox::Yes);

如此,简单的sqlite数据操作完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值