Qt数据库编程 SQL连接
创始人
2024-08-01 09:11:11
0

如果要使用QSqlQuery或QSqlCursor类,则少要连接并打开一个数据库连接。如果应用程序只需要一个数据库连接,QSqlDatabase类可以创建一个为所有SQL操作所利用的默认连接,如果需要多个数据库连接,每个连接也可以容易地建立。QSqlDatabase需要qsqldatabase.h这个头文件。

Qt Sql模块提供了一个平台无关且数据库无关的访问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语句的执行是否出现错误。

  1. placeholder  
  2. QSqlQuery::prepare()   
  3. QSqlQuery::bindValue() or QSqlQuery::addBindValue()  
  4. QSqlQuery::exec() 

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

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

QSqlDatabase::driver() 返回该连接底层所使用的dirver

QSqlDatabase::hasFeature()可用来查询底层数据库是否支持某项特性。

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

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

  1. QSqlTableModel::record() & QSqlTableModel::value()  
  2. QSqlTableModel::insertRow() & QSqlTableModel::setData()  
  3. QSqlTableModel::submitAll() 

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

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

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

小结:Qt数据库编程 SQL连接的内容介绍完了,QSqlQuery的这个类要了解清楚,希望本文能够帮助到你,帮你解决问题。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...