【Qt】SQLite数据库连接

举报
小糖饼最甜呀 发表于 2022/03/20 10:24:24 2022/03/20
【摘要】 介绍QT中使用SQLite的基本用法,包括创建数据库连接,执行SQL语句操作数据库,关闭数据库等基本用法。

SQLite

SQLite是一款轻量型数据库,目前已被世界广泛应用。
SQLite是一个c语言库,该数据库的特点有小型、快速、自包含、高可靠性、全功能等。SQLite文件格式是稳定的、跨平台的、向后兼容。

兼容性

向前兼容(Forward Compatibility):指老版本可以使用新版本产生的数据。
向上兼容(Upward Compatibility):与向前兼容相同。
向后兼容(Backward Compatibility):指新的版本可以使用老版本产生的数据。
向下兼容(Downward Compatibility):与向后兼容相同。

SQLite向后兼容,即新版本可以使用老版本产生的数据库文件。

QT中使用SQLite数据库

SQLite数据库的整个数据库内容都保存在一个单一的文件中,理解为一个数据库文件是一个数据库。

创建数据库连接

Qt使用类QSqlDatabase进行创建连接、管理数据库等。

// 增加数据库连接
// type:数据库驱动类型
// connectionName:连接名称
QSqlDatabase QSqlDatabase::addDatabase(const QString &type, const QString &connectionName = QLatin1String(defaultConnection))

SQLite数据库连接方式如下:

QSqlDatabase dataBase = QSqlDatabase::addDatabase("QSQLITE", "sqliteDbConnection");

connectionName连接名可以省略,若是省略,则为默认连接。

当前可用数据库驱动类型表

type 数据库
QDB2 IBM DB2
QIBASE Borland InterBase Driver
QMYSQL MySQL Driver
QOCI Oracle Call Interface Driver
QODBC ODBC Driver (includes Microsoft SQL Server)
QPSQL PostgreSQL Driver
QSQLITE SQLite version 3 or above
QSQLITE2 SQLite version 2
QTDS Sybase Adaptive Server

Qt查看可支持的数据库驱动

// 获取可用的所有数据库驱动列表
static QStringList QSqlDatabase::drivers();
// 判断数据库驱动是否可用
static bool QSqlDatabase::isDriverAvailable(const QString &name)

初始化数据库

SQLite数据库文件后缀是.rdb;
SQLite数据库连接方式如下:

QString fileName = "D:\SQLite\demo.rdb";
dataBase.setDatabaseName(fileName);

打开数据库

操作数据库之前,需要先成功打开数据库。

dataBase.open()

获取所有数据库表

获取所有数据库表,以便后续操作等。

QStringList tableList = dataBase.tables();

创建query

Qt使用QSqlQuery来操作数据库,query需要关联数据库dataBase,以便对该数据库进行操作。

QSqlQuery query(dataBase);

创建数据库表

创建数据库表demoTable,若不存在,则创建demoTable表。

if(!tableList.contains("tableName"))
    {
        QString createTable = QString("CREATE TABLE IF NOT EXISTS demoTable(\
                                      no INTEGER PRIMARY KEY,\
                                      name VARCHAR(256) NOT NULL DEFAULT '', \
                                      count INTEGER NOT NULL DEFAULT '1');");
        if(!query.exec(createTable))
        {
            return false;
        }
    }
    else
    {
        // 其它操作
    }

SQL语句执行

使用QSqlQuery对数据库进行增删改查。

query.exec(sqlQueryInfo);

关闭数据库

数据库使用结束后,需要进行关闭,以释放资源。

dataBase.close();
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。