Qt 中的数据库操作比较简单,因为Qt提供了不需要SQL知识就可以浏览和编辑数据库的接口。

Qt中的Qtsql模块提供了对数据库的支持,该模块中的众多类基本可以分为3层:

  • 用户接口层: QSqlQueryModel,QSqlTableModel 和 QSqlRelationalTableModel
  • SQL接口层:QSqlDatabase、QSqlQuery,QSqlError、QSqlField、QSqlIndex
    和QSqlRecord
  • 驱动层: QSqlDriver ,QSqlDriverCreator< T >,QSqlDriverCreatorBase,QSqlDriverPlugin 和 QSqlResult

驱动层为具体的数据库和SQL接口层之间提供了底层的桥梁;

SQL接口层提供了对数据的访问,其中QSqlDatabase类用来创建连接,QSqlQuery类可以使用SQL语句来实现与数据库的交互;

用户接口层的类实现了将数据库链接到窗口部件上,这些类是使用模型、视图框架实现的。

如果要使用QtSql模块中的类,需要在项目文件(.pro)中添加“”“QT+=sql”;

执行如下代码:

    qDebug() << "Available drivers:";QStringList drivers = QSqlDatabase::drivers();foreach(QString driver, drivers)qDebug() << driver;

输出:
Available drivers:
“QSQLITE”
“QODBC”
“QODBC3”
“QPSQL”
“QPSQL7”

可以发现Qt 默认并不支持mysql 的驱动。不过可以手动添加mysql 的驱动文件。这里先不作重点介绍了。

这里我们先就SQLite数据库,它是一款轻型的文件型数据库,主要用在嵌入式领域,支持跨平台。

1、创建数据库链接

QSqlDataBase db = QSqlDataBase :: addDataBase("QSQLITE");//以默认方式,创建连接对象
//初始化数据库信息
db.setHostName("bigblue");    //设置主机名
db.setDatabaseName("fightdb");  //设置数据库名
db.setUserName("myname"); //设置用户名
db.setPassword("lusfasdf"); //设置密码
bool ok = db.open();  //打开数据库

2、SQLite数据库的建立

先创建connection.h 文件,

#ifndef CONNECTION_H
#define CONNECTION_H
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>static bool createConnection()
{QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName(":memory:");if (!db.open()) {QMessageBox::critical(0, "Cannot open database","Unable to establish a database connection.", QMessageBox::Cancel);return false;}QSqlQuery query;query.exec("create table student (id int primary key, ""name varchar(20))");query.exec("insert into student values(0, 'LiMing')");query.exec("insert into student values(1, 'LiuTao')");query.exec("insert into student values(2, 'WangHong')");return true;
}#endif // CONNECTION_H

创建连接并插入数据表项

然后在主函数调用并查询数据库。

#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QStringList>
#include "connection.h"
#include <QVariant>int main(int argc, char *argv[])
{QApplication a(argc, argv);// 创建数据库连接if (!createConnection()) return 1;// 使用QSqlQuery查询整张表QSqlQuery query;query.exec("select * from student");while(query.next()){qDebug() << query.value(0).toInt() << query.value(1).toString();}return a.exec();
}

Qt 数据库操作(一)相关推荐

  1. Qt数据库操作(三) -- 使用SQL模型类

    文章目录 Qt数据库操作(三) -- 使用SQL模型类 1.SQL查询模型 2.SQL表格模型 3.关系表格模型 Qt数据库操作(三) – 使用SQL模型类 Qt 提供了3个高级的类来访问数据库,分别 ...

  2. 详细的Qt数据库操作

    #include QT += sql QSqlDatabase类实现了数据库连接的操作 QSqlQuery类用来执行SQL语句 QSqlRecord类 封装数据库所有记录 第一:QSqlDatabas ...

  3. qt 数据库操作总结

    整理一下 QT 操作数据库的一些要点,以备以后的查询学习(主要是操作 mysql ). 转载于:https://www.cnblogs.com/lsgxeva/p/7852102.html 首先,要查 ...

  4. Qt 数据库操作(二)

    文章目录 执行SQL语句 1.执行一个查询 2.浏览结果集 3.插入.更新和删除记录 4.事务 执行SQL语句 1.执行一个查询 QSqlQuery类提供了一个接口,用于执行SQL语句和浏览查询的结果 ...

  5. 3.QT数据库综合案例,模糊查询等操作

     1 新建一个项目: Database01.pro SOURCES += \ main.cpp \ Contact.cpp QT += gui widgets sql CONFIG += C++1 ...

  6. 2.关于QT中数据库操作,简单数据库连接操作,数据库的增删改查,QSqlTableModel和QTableView,事务操作,关于QItemDelegate 代理

     Linux下的qt安装,命令时:sudoapt-get install qt-sdk 安装mysql数据库,安装方法参考博客:http://blog.csdn.net/tototuzuoquan ...

  7. qt中数据库操作总结

    #include <QtSql> QT += sql QSqlDatabase类实现了数据库连接的操作 QSqlQuery类用来执行SQL语句 QSqlRecord类 封装数据库所有记录 ...

  8. Qt下Sqlite数据库操作

    Sqlite数据库作为Qt项目开发中经常使用的一个轻量级的数据库,可以说是兼容性相对比较好的数据库之一(Sqlite就像Qt的亲儿子,如同微软兼容Access数据库一样).关于Sqlite和Qt的千丝 ...

  9. qt 不显示 mysql 数据表中的内容_qt 数据库操作总结

    整理一下 QT 操作数据库的一些要点,以备以后的查询学习(主要是操作 mysql ). 转载于:https://www.cnblogs.com/lsgxeva/p/7852102.html 首先,要查 ...

最新文章

  1. 如何通过域服务器推送安装文件,域环境推送exe程序并自动安装教程域环境推送exe程序并自动安装教程.pdf...
  2. WPF无边框拖动、全屏、缩放
  3. oracle禁止自动启动命令,自动启动和关闭Oracle 脚本
  4. 洛谷P7518:宝石(倍增、可撤销并查集)
  5. python 同步event对象
  6. LINUX如何让内存FREE变大,(转)Linux中显示空闲内存空间的free命令的基本用法
  7. 解决Mac下Parallels Desktop的Host-only网络问题
  8. Chrome使用、插件、脚本
  9. Unity 预编译选项
  10. 推荐几个提供网站测速服务网站
  11. 前端web要学mysql吗_学前端必须学习HTML和js吗?
  12. 小米手机的sd卡显示无服务器,小米sd卡无法读取_我的小米手机识别不到SD卡,怎么办?...
  13. 世界星载SAR发展5——SIR-C(1994,美国)
  14. 内核问题解决方法记录
  15. 《搞不定人,你如何带团队?》读书记录
  16. 明星开餐饮店,逃不过凉凉的魔咒?
  17. 58同城、前程无忧在前,快手做招聘能否弯道超车?
  18. 蓝牙简介 | bluetooth
  19. #10115. 「一本通 4.1 例 3」校门外的树
  20. 日语在线翻译网站大全

热门文章

  1. 牛客网题目——不用四则运算符号,计算两个数字的和
  2. 【Matlab】判断是否为空?是否为NaN?
  3. 三分钟带你对 Softmax 划重点
  4. pls-00302: 必须声明 组件_手把手教你开发vue组件库
  5. 测试公众号修改名称_微信公众号开通个人认证,只需三步
  6. 点击表格获取列索引的方法
  7. 高级C语言教程-指针和存储
  8. 常用DOS系统功能调用(INT 21H)一览表
  9. Flex Builder 4.6 正式版eclipse插件利用BlazeDS于java交互实例
  10. 记录SpringBoot集成Shiro使用Redis作缓存遇到的一个问题(Key-Value)互换