1. Qt数据库简介
因为SQLite数据库体积较小,是唯一一款Qt内置的数据库,使用时无需单独安装数据库,也无需编译对应的驱动程序。SQLite也是嵌入式领域常用的数据库,这种数据库不适合作为服务器使用,但是适合成为程序本地数据库。
2. 连接数据库
相关函数如下:
// 连接数据库
// 参数:数据库的驱动名称
// 返回值:数据库连接对象
QSqlDatabase QSqlDatabase::addDatabase(const QString & type) [static]
// Qt为不同的数据库指定了一套统一的操作接口,不同的数据库调用此函数的功能有差别,如果数据库类型是SQLite,此函数表示设置数据库文件的名称,因为SQlite数据库是以单文件形式存在的。
// 参数:数据库文件名称,通常扩展名为.db或.db3,此处的数据库文件名称不写扩展名也可以使用,但是加上扩展名方便后续调试,建议加上。
void QSqlDatabase::setDatabaseName(const QString & name)
// 打开数据库连接,返回值为打开是否成功。
// 如果失败可以通过lastError()函数获得错误信息
// 如果成功,可以在构建目录中找到创建的数据库文件
bool QSqlDatabase::open()
// 获得上一次数据库错误的信息
// 返回值是错误信息封装类,可以通过QString QSqlError::text() const获得
QSqlError QSqlDatabase::lastError() const
// 数据库连接是否已经打开
bool QSqlDatabase::isOpen() const
// 关闭数据库连接
void QSqlDatabase::close()
3. 建表
一个建表语句如下所示:
CREATE TABLE dongman(\
id INTEGER PRIMARY KEY,\
name TEXT,\
country TEXT,\
star INTEGER);
反斜杠表示QString内部的换行,也可以使用一行完成。
4. 增删改
增删改都需要录入的UI输入,常规方法是获得用户输入后,与SQL语句进行字符串拼接,形成最终的SQL语句 。这种做法在Qt中已经不推荐使用。
6. 查询
相关函数如下:
// 判断后续有无数据,如果有自动后移一位
bool QSqlQuery::next()
// 取出当前记录的某列数据
// 参数是列名
// 返回值是数据
QVariant QSqlQuery::value(const QString & name) const
// 取出当前记录的某列数据
// 参数是列序号,从0开始
// 返回值是数据
QVariant QSqlQuery::value(int index) const