QtSql模块提供了一个平台无关且数据库无关的访问SQL数据库的接口。

Qt中的每个数据库连接用一个QSqlDatabase对象来表示;Qt使用不同driver来和各种不同数据库的API进行通讯。

QSqlQuery提供了直接执行任意SQL语句的特性;此外还提供了两个高层次的无需SQL命令的数据库接口:QSqlTableModel和QSqlRelationalTableModel
Section 1. Connecting and Querying

在执行SQL命令前,必须先建立好同数据库的连接。

静态函数QSqlDatabase::addDatabase()用于创建一个新的QSqlDatabase对象,函数的第一个参数指定了Qt该选择哪个Driver来访问数据库。

在对创建的QSqlDatabase对象设定好host name,database name ,username和password后,需要调用open()函数来建立到数据库的连接。

一旦到数据库的链接建立好后,就可以通过QSqlQuery::exec()来执行底层数据库所支持的任意SQL语句了。

QSqlQuery::next()返回查询结果集中的下一行,而QSqlQuery::value()则返回当前行中的某一项的值,以QVariant的形式返回。

可以使用QSqlQuery::isActive()来检查SQL语句的执行是否出现错误。

placeholder
    QSqlQuery::prepare() 
    QSqlQuery::bindValue() or QSqlQuery::addBindValue()
    QSqlQuery::exec()

Qt支持数据库中transaction(事务)这个概念。transaction()用于启动transaction,而commit()或rollback()用于结束transaction。

静态函数QSqlDatabase::database(),返回指定连接所对应的QSqlDatabase对象。

QSqlDatabase::driver() 返回该连接底层所使用的dirver
    QSqlDatabase::hasFeature()可用来查询底层数据库是否支持某项特性。

Qt允许在一个程序中创建多个数据库连接,这中情况下在执行SQL语句时,需要为QSqlQuery的构造函数传入要执行该语句的数据库对应的QSqlDatabase对象。

与QSqlQuery相比,QSqlTableModel提供了一个更高层次、更抽象的接口,可以避免使用原始的SQL命令。

QSqlTableModel::record() & QSqlTableModel::value()

QSqlTableModel::insertRow() & QSqlTableModel::setData()

QSqlTableModel::submitAll() ,于其他model不同,在使用QSqlTableModel时,必须调用submitAll()来强制所有的修改都写入数据库。

当需要处理外键(foreign key)时,需要使用QSqlRelationalTableModel而不是QSqlTableModel。

对于使用了SQL相关类的应用程序,需要在对应的.pro中添加下面一行:"QT     +=sql",这样在链接时会将QtSql库链入。

Qt数据库编程_基本的更多相关文章

  1. Qt数据库编程1

    Qt中数据编程主要分为以下两点:1.利用qt提供类 访问数据库或者成为简单的数据库编程2.数据库编程中引入model/view编程模型 qt中数据库编程的步骤: 1.加载数据库驱动 QSqlDatab ...

  2. QT 数据库编程三

    //mainwindow.cpp #include "mainwindow.h" #include "logindlg.h" #include "sc ...

  3. Qt——数据库编程

    一.概述 Qt提供了一个类似JDBC的数据库接口,需要为每个可以连接的特定数据库提供驱动程序,可以通过 QStringList QSqlDatabase::drivers() 知道当前版本的Qt哪些驱 ...

  4. QT 数据库编程四

    //vmysql.cpp #include "vmysql.h" #include <QMessageBox> Vmysql::Vmysql() { mysql_ini ...

  5. QT 数据库编程二

    //logindlg.cpp #include "logindlg.h" #include <QGridLayout> #include <QHBoxLayout ...

  6. QT基于model/view数据库编程2

    Qt中数据编程主要分为以下两点:1.利用qt提供类 访问数据库或者成为简单的数据库编程2.数据库编程中引入model/view编程模型 基于model/view数据库编程: qt提供model类: Q ...

  7. Qt数据库_资料

    1. QT笔记_数据库总结(一)-rojian-ChinaUnix博客.html http://blog.chinaunix.net/uid-28194872-id-3631462.html (里面有 ...

  8. VB.NET数据库编程基础教程

    关键词:作者罗姗   众所周知,VB.NET自身并不具备对数据库进行操作的功能,它对数据库的处理是通过.NET FrameWork SDK中面向数据库编程的类库和微软的MDAC来实现的.其中,ADO. ...

  9. Vc数据库编程基础MySql数据库的表查询功能

    Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...

随机推荐

  1. leetcode-100. Same Tree · Tree + DFS + Queue

    题面 对比两棵二叉树是否相同,返回结果. 思路 1. 递归解决DFS 首先判断根节点,如果都空,返回true: 如果一空一不空,返回false: 如果都不空,判断两节点值是否相同,若不同,返回fals ...

  2. 什么?在SAP中国研究院里还需要会PHP开发?

    请原谅Jerry这篇文章的题目有"标题党"的嫌疑. 没错,至少SAP成都研究院的部分团队如此,比如Jerry目前就职的SAP成都研究院数字创新空间. 之前Jerry的文章, 曾经提 ...

  3. git 从存储库中删除敏感数据(删除文件历史)

    1.如果您的历史记录中还没有包含敏感数据的存储库的本地副本,请将存储库克隆到本地计算机. git clone https://github.com/YOUR-USERNAME/YOUR-REPOSIT ...

  4. 机器学习 三剑客 之 pandas + numpy

    机器学习 什么是机器学习? 机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测 机器学习存在的目的和价值领域? 领域: 医疗.航空.教育.物流.电商 等... 目的: 让机器学习 ...

  5. Splay树详解

    更好的阅读体验 Splay树 这是一篇宏伟的巨篇 首先介绍BST,也就是所有平衡树的开始,他的China名字是二叉查找树. BST性质简介 给定一棵二叉树,每一个节点有一个权值,命名为 ** 关键码 ...

  6. 手写KMeans算法

    KMeans算法是一种无监督学习,它会将相似的对象归到同一类中. 其基本思想是: 1.随机计算k个类中心作为起始点. 将数据点分配到理其最近的类中心. 3.移动类中心. 4.重复2,3直至类中心不再改 ...

  7. python3 random

    一.random 1.生成伪随机数 2.伪随机数是可预测的,严格意义上不具有随机性质,通常用数学公式的方法(比如统计分布,平方取中等)获得 3.正如数列需要有首项,产生伪随机数需要一个初值用来计算整个 ...

  8. Java字节码方法表结构深度剖析

    继续上一次[https://www.cnblogs.com/webor2006/p/9459681.html]的字节码分析,这次来分析一下最为复杂的方法表的信息,如下: 而上一次分析到了属性表的位置在 ...

  9. 2018/7/31-zznu-oj-问题 F: 手机密码--【裸dfs+for循环即可!——据说三个小时内只有两个人读完了题意并轻松AC了】

    问题 F: 手机密码 时间限制: 1 Sec  内存限制: 128 MB提交: 41  解决: 23[提交] [状态] [讨论版] [命题人:admin] 题目描述 手机安全问题是大家经常关心的一个问 ...

  10. Java8-ConcurrentHashMap

    import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ForkJoinPool; public clas ...