Qt数据库编程 SQL连接

转载自http://mobile.51cto.com/symbian-270429.htm

QSqlQuery包括了所有的功能,像在一个QSqlDatabase上执行SQL查询创建、导航和索取数据等等。 它可以执行DML(数据操作语言)语句,比如 SELECT, INSERT, UPDATE 和 DELETE, 还可以执行DDL(数据定义语言)语句,比如:CREATE TABLE。

AD:


    如果要使用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的这个类要了解清楚,希望本文能够帮助到你,帮你解决问题。


    • 0
      点赞
    • 1
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值