zoukankan      html  css  js  c++  java
  • Qt数据库编程_基本

    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库链入。

  • 相关阅读:
    eclipse export runnable jar(导出可执行jar包) runnable jar可以执行的
    mave常用指令
    771. Jewels and Stones珠宝数组和石头数组中的字母对应
    624. Maximum Distance in Arrays二重数组中的最大差值距离
    724. Find Pivot Index 找到中轴下标
    605. Can Place Flowers零一间隔种花
    581. Shortest Unsorted Continuous Subarray连续数组中的递增异常情况
    747. Largest Number At Least Twice of Others比所有数字都大两倍的最大数
    643. Maximum Average Subarray I 最大子数组的平均值
    414. Third Maximum Number数组中第三大的数字
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/3747188.html
Copyright © 2011-2022 走看看