QSqlDatabase

来源:互联网 发布:招商银行 知乎 编辑:程序博客网 时间:2024/05/12 14:14

QSqlDatabase类提供了一个链接数据库的类。
QSqlDatabase类提供了通过连接来使用使用库的接口,QSqlDatabase的一个实例就代表了对数据库的连接,这个提供使用数据库的连接是通过 supported database driver来实现的, 这个supported database drivers是由 QSqlDriver来实现的。当然,你也可以通过子类化自己的数据库驱动(database driver). See How to Write Your Own Database Driver.
创建一个连接connection(也就是一个QSqlDatabase的一个实例)通过调用 addDatabase(), 你在这个函数种可以指定驱动或者驱动的类型(the driver or type of driver)来使用(也就是你想使用哪种类型的数据库)和一个连接的名字。一个数据库的连接是通过它的名字被知晓的,而不是它所连接的数据库的名字。你可以对一个数据库有多个不同的连接。QSqlDatabase 也可以支持默认连接的概念,也就是一个无名的连接。创造一个默认的连接,也就是在调用addDatabase()时不给这个函数传递连接名字的参数。
因此,当这个连接拥有连接名称时,你可以通过连接名字来调用任意的静态的成员函数,如果没有连接名称时,那这个连接就是一个假设。
一旦这个QSqlDatabase的对象被创建了,设置这个连接的参数通过:
setDatabaseName()
setUserName()
setPassword()
setHostName()
setPort()
setConnectOptions()
然后就可以调用 open()来激活这个数据库的物理连接。这个连接不是可用的直到你打开这个连接。
QSqlDatabase是一个有价值的类。任意的一个QSqlDatabase的一个实例的数据库连接产生了变化,那这个变化也会影响QSqlDatabase的其他的具有相同连接的实例。使用
cloneDatabase() 来创建一个独立的已经存在了的数据库的连接。
如果你创建了多个数据库的连接,为每一个连接指定一个唯一的名字,当你需要调用addDatabase()。使用数据库连接的名字来获取某个指定的连接。使用removeDatabase() 并传递一个连接的名字来移除一个连接。QSqlDatabase来输出一个警告,如果你试图移除一个被其他的QSqlDatabase对象引用的连接。使用 contains()来看给定的连接名是否已经存在在所有连接的列表种。
一旦一个连接建立起来,你可以是调用 tables() 来获取这个数据库中的所有的表的列表,调用 primaryIndex()来获取一个表的主键 primary index , 也可以通过调用 record() 来获取meta-information关于列表的fields(也就是field名字)。
如果一个 drivers支持交易 transactions, 使用transaction()来启动一个transaction, 还有 commit(), rollback() 来完成他。使用hasFeature()来询问是否这个driver支持这些交易。
Note: 当使用 transactions, 你需要启动这个transaction 在你创建你的 query之前。
如果一个错误产生了, lastError() 将会返回关于这个错误的信息。
获取这些可以接近的 SQL drivers通过 drivers(), 检查一个特定的driver是否存在通过调用 isDriverAvailable(). 如果你创建了你自定义的一个driver, 你必须注册它,通过registerSqlDriver().
举些例子。

0 0
原创粉丝点击