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

  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语句字符串")

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值