怎样在Qt下连接读写sqlite数据库

 时间:2026-02-13 11:35:58

1、这里以学生信息的录入与读取来作为演示,主要目的是演示数据库的操作,至于数据的显示等不在演示范围内,请您自行研究。

首先,在Qt中建立一个图形界面的程序项目。

怎样在Qt下连接读写sqlite数据库

2、然后,我们在命令行下用sqlite命令创建了数据库 C:\StudentInfo\sutdentdata.db,并且建立了一个数据库表student,该表有四个字段ID、Name、Sex、Age,未向表中添加任何数据。

关于sqlite的简单使用,可以参考我们的另一篇经验。

怎样在Qt下连接读写sqlite数据库

3、在读写SQLite数据库中,我们最主要用到的是QSqlDatabase类及QSqlQuery类,前者负责创建数据库连接并打开数据库,后者负责执行查询操作。实际上前者也可以进行查询操作并将结果返回给QSqlQuery对象,但是Qt并不建议这么做。

在干活前,依然是先看看Assitant,这是培养独立解决问题的一个好习惯。

怎样在Qt下连接读写sqlite数据库

怎样在Qt下连接读写sqlite数据库

4、好,下面给  录入  按钮的点击事件编写代码。关于如何给按钮的某一事件进行编码,可以参考我们另一篇经验。

首先在.pro文件中加上sql,然后别忘了#include <QSqlDatabase>以及#include <QSqlQuery>。

好了,下面在录入按钮的槽中加入如下代码:

QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE","wconntosqlite");

    mydb.setDatabaseName("c:\\StudentInfo\\studentdata.db");

    if(mydb.open())

    {

        QSqlQuery query(mydb);

        QString sqlstr="insert into student (ID,Name,Sex,Age) values ('"

                +ui->le_id->text()+"','"

                +ui->le_name->text()+"','"

                +ui->le_sex->text()+"',"

                +ui->le_age->text()+")";

        bool isok=query.exec(sqlstr);

        if(isok)

            qDebug()<<"数据写入成功";

    }

上面我们先调用了QSqlDatabase的静态函数addDatabase创建了一个名为wconntosqlite的连接。然后给其传递数据库名称。

如果数据库打开成功,就创建一个关联的QSqlQuery对象,最后由QSqlQuery来执行插入数据工作。

特别注意:QSqlQuery对象的创建必须在mydb  open成功以后才行,否则会出错。

我们来看看效果如何。

怎样在Qt下连接读写sqlite数据库

5、我们接着来写查询按钮的代码,输入以下代码:

QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE","rconntosqlite");

    mydb.setDatabaseName("c:\\StudentInfo\\studentdata.db");

    if(mydb.open())

    {

        QSqlQuery query(mydb);

        QString sqlstr="select * from student";

        bool isok=query.exec(sqlstr);

        if(isok)

            qDebug()<<"数据读取成功";

        query.first();

        QString result="学号:"+query.value(0).toString()+"  "

                +"姓名:"+query.value(1).toString()+"  "

                +"性别:"+query.value(2).toString()+"  "

                +"年龄:"+query.value(3).toString();

        ui->lbl_query->setText(result);

    }

与写入数据基本差不多,这里需要特别注意的是query.first();。看看Assistant怎么说的就知道了。原来,query对象在执行完查询语句后,query的位置被置于一个不可用的位置,如果想从query中获取数据,需要设置query到一个可用的记录中才行。方法有好几种,这里我们用了first()成员函数。

好,来看看运行结果。

可以看到软件读取的数据与控制台窗口的数据是一致的。

怎样在Qt下连接读写sqlite数据库

怎样在Qt下连接读写sqlite数据库

6、我们来总结下Qt操作SQLite数据库的五步走法决:

第一步,建立一个连接:QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");

第二步,关联数据库文件:db.setDatabaseName("这里你的数据库文件路径")

第三步,打开数据库:db.open()

第四步,如果数据库打开成功,就建立一个相关联的QSqlQuery对象:QSqlQuery query(db)

第五步,执行SQL语句:query.exec("你的SQL语句字符串")

  • 如何把CAD模型导入MATLAB
  • 如何在AD中放置P型金属半导体场效应晶体管?
  • 大学生应当注意哪些职场礼仪
  • 如何在SQL Server2008中用代码建库建表
  • Visio怎样给新建模具中的形状重命名
  • 热门搜索
    怎么样消除黑眼圈 接触性皮炎怎么办 康宝消毒柜怎么样 以铜为镜可以正衣冠 参茸补肾片效果怎么样 孕妇可以吃方便面 意大利面酱怎么做 旅游团查询 孕妇可以吃菠萝吗 忘记宽带密码怎么办