Qt 之 QSqlDriver Class

来源:互联网 发布:交换机基于mac的acl 编辑:程序博客网 时间:2024/06/16 14:55

详细描述

QSqlDriver类是用于访问特定数据库的抽象基类。
和QSqlQuery类一样,QSqlDriver类也不应该直接使用。使用QSQLDatabase类代替(LZ猜测Qt这是不是用了组合模式)。
如果你要创建自己的SQL驱动,你可以子类化QSqlDriver类并重新实现它的纯虚函数和那些你需要的虚函数。可以去Qt Assistant中搜索How to Write Your Own Database Driver 获取更多信息。

相关成员

enum QSqlDriver::DriverFeature

这个枚举包含一个驱动程序可能支持的特性列表。使用hasFeature()来查询是否支持某个特性。

常量

描述

QSqlDriver::Transactions

0

驱动是否支持SQL 事务

QSqlDriver::QuerySize

1

数据库是否能够报告查询的大小。请注意,有些数据库是不支持返回查询的大小的(也就是返回的行数),在这种情况下QSqlQuery::size()将返回-1

 

QSqlDriver::BLOB

2

驱动是否支持二进制大对象字段

QSqlDriver::Unicode

3

如果数据库服务器支持Unicode字符串,驱动是否支持(Unicode字符串

QSqlDriver::PreparedQueries

4

驱动是否支持执行准备查询(prepared query)

QSqlDriver::NamedPlaceholders

5

驱动是否支持使用命名占位符

QSqlDriver::PositionalPlaceholders

 

6

驱动是否支持使用位置占位符

QSqlDriver::LastInsertId

7

驱动是否支持返回最后一行的Id

QSqlDriver::BatchOperations

8

驱动是否支持批处理操作,详见QSqlQuery::execBatch()

QSqlDriver::SimpleLocking

9

当有其它查询在表上有读锁时,驱动是否不允许写锁

QSqlDriver::LowPrecisionNumbers

10

驱动是否支持获取低精度的的数值

QSqlDriver::EventNotifications

11

驱动是否支持数据库事件通知

QSqlDriver::FinishQuery

 

12

QSqlQuery::finish() 被调用,驱动是否支持任何低级别的资源清理

QSqlDriver::MultipleResultSets

13

驱动是否可以访问从批处理语句或存储过程返回的多个结果集。

QSqlDriver::CancelQuery

14

驱动是否允许取消一个正在执行的查询

更多关于驱动支持的特性可以在 Qt SQL driver 文档中找到。

enum QSqlDriver::IdentifierType
这个枚举包含一个SQL标识符类型的列表。

常量

描述

QSqlDriver::FieldName

0

一个SQL字段名

QSqlDriver::TableName

1

一个SQL表名


enum QSqlDriver::NotificationSource
这个枚举包含一个SQL通知源列表。

常量

描述

QSqlDriver::UnknownSource

0

通知源是未知的

 

QSqlDriver::SelfSource

1

通知源就是这个连接

 

QSqlDriver::OtherSource

2

通知源是另一个连接




enum QSqlDriver::StatementType
这个枚举包含一个驱动程序可以创建的SQL语句(或子句)类型。

常量

描述

QSqlDriver::WhereStatemet

0

一个SQL WHERE 语句(例如: where f=5

QSqlDriver::SelectStatement

1

一个SQL SELECT语句(例如: SELECT f FROM t

QSqlDriver::UpdateStatemnt

2

一个SQL UPDATE 语句(例如:UPDATE TABLE t set f=1

QSqlDriver::InsertStatement

3

一个SQL INSERT 语句(例如:insert into t(f) values(1)

QSqlDriver::DeleteStatement

4

一个SQL DELETE语句(例如: delete from t


参见sqlStatement()。


相关API

QSqlDriver::QSqlDriver(QObject * parent = 0)
用给定的
parent 构造一个新的 
QSqlDriver对象。

QSqlDriver::~QSqlDriver()
销毁对象并释放任何已分配的资源。

bool QSqlDriver::beginTransaction() [virtual]
这个函数被调用用于开启一个事务。如果成功,返回true,否则返回false。默认实现什么都没做只是返回false。

void QSqlDriver::close() [pure virtual]
派生类必须重新实现这个纯虚函数以关闭数据库连接。成功返回true,失败返回false。

bool QSqlDriver::commitTransaction() [virtual]
这个函数被调用去提交一个事务。如果成功,返回true,否则返回false。默认实现什么都没做只是返回false。

QSqlResult * QSqlDriver::createResult() const [pure virtual]
在数据库上创建一个空的SQL结果。派生类必须重新实现这个纯虚函数并返回一个 QSqlResult对象给调用者。

bool QSqlDriver::hasFeature(DriverFeature feature) const [pure virtual]
如果数据库驱动支持
feature特性返回true;否则返回false。
注意有些数据库在确定有没有这些特性之前需要先打开open().

bool QSqlDriver::isOpen() const [virtual]
如果数据库连接打开返回true;否则返回false。

bool QSqlDriver::open(const QString & db, const QString & user = QString(), const QString & password = QString(), const QString & host = QString(),int port = -1, const QString & options = QString()) [pure virtual]
派生类必须重新实现这个纯虚拟功能,以便在数据库db上打开数据库连接,使用用户名用户、密码密码、主机主机、端口端口和连接选项选项。

QString QSqlDriver::sqlStatement(StatementType type, const QString & tableName, const QSqlRecord & rec, bool preparedStatement) const [virtual]
返回一条来自rec记录的带有表名tableName语句类型为type的SQL语句。如果preparedStatement为true,返回的SQL 字符串将会包含占位符而不是值。