QT数据库连接必备QSqlDatabase
2015-02-24 22:18
120 查看
每个应用都需要或多或少的保存一些数据,当不想用文件保存数据时,最好的选择恐怕就是数据库了。数据库拥有管理数据方便,数据可读性高等优点。那么在QT中又怎样使应用与数据库关联呢?!下面来介绍一个QSqlDatabase类(不是操作数据库,只连接数据库,操作数据请看数据库操作):
同一个database可以被创建多个连接。
目前支持的驱动类型(Qt5.3)
以上不一定全部被使用。例:
注意:调用该函数将使所有正在执行操作的QSqlQuery操作失效。且该函数会影响其副本。
注意:当open = true时,未打开的连接将会被打开。当connectionName不存在时,将返回无效连接。
删除一个被其他QSqlDatabase对象引用的连接将会发出警告。
注意:需要在已连接的情况下使用。
例:
如果不存在主索引,则返回空QSqlIndex。
当tablename不存在时,返回空QSqlRecord。
注意:需要数据库的支持。
注意:需要先开启事务处理。
注意:需要先开启事务处理。
例:
QSqlDatabase
创建连接
QSqlDatabase QSqlDatabase::addDatabase(const QString & type, const QString & connectionName = QLatin1String( defaultConnection )) [static]
同一个database可以被创建多个连接。
目前支持的驱动类型(Qt5.3)
设置连接参数
void QSqlDatabase::setDatabaseName(const QString & name) void QSqlDatabase::setUserName(const QString & name) void QSqlDatabase::setPassword(const QString & password) void QSqlDatabase::setHostName(const QString & host) void QSqlDatabase::setPort(int port) void QSqlDatabase::setConnectOptions(const QString & options = QString())
以上不一定全部被使用。例:
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL"); db.setHostName("acidalia"); db.setDatabaseName("customdb"); db.setUserName("mojito"); db.setPassword("J0a1m8"); bool ok = db.open();
打开数据库连接
bool QSqlDatabase::open()
关闭连接
void QSqlDatabase::close()
注意:调用该函数将使所有正在执行操作的QSqlQuery操作失效。且该函数会影响其副本。
获取连接名
//获取当前对象连接名 QString QSqlDatabase::connectionName() const //获取所有连接名 QStringList QSqlDatabase::connectionNames() [static]
获取连接对象
QSqlDatabase QSqlDatabase::database(const QString & connectionName = QLatin1String( defaultConnection ), bool open = true) [static]
注意:当open = true时,未打开的连接将会被打开。当connectionName不存在时,将返回无效连接。
复制连接对象
QSqlDatabase QSqlDatabase::cloneDatabase(const QSqlDatabase & other, const QString & connectionName) [static]
删除连接对象
void QSqlDatabase::removeDatabase(const QString & connectionName) [static]
删除一个被其他QSqlDatabase对象引用的连接将会发出警告。
检测连接是否存在
bool QSqlDatabase::contains(const QString & connectionName = QLatin1String( defaultConnection )) [static]
获取数据库表
QStringList QSqlDatabase::tables(QSql::TableType type = QSql::Tables) const
注意:需要在已连接的情况下使用。
判断连接有效性
bool QSqlDatabase::isValid() const
例:
QSqlDatabase db; qDebug() << db.isValid(); // Returns false db = QSqlDatabase::database("sales"); qDebug() << db.isValid(); // Returns \c true if "sales" connection exists QSqlDatabase::removeDatabase("sales"); qDebug() << db.isValid(); // Returns false
获取数据表主索引
QSqlIndex QSqlDatabase::primaryIndex(const QString & tablename) const
如果不存在主索引,则返回空QSqlIndex。
获取字段元信息
QSqlRecord QSqlDatabase::record(const QString & tablename) const
当tablename不存在时,返回空QSqlRecord。
开启事务处理
QStringList QSqlDatabase::tables(QSql::TableType type = QSql::Tables) const
注意:需要数据库的支持。
提交事务
bool QSqlDatabase::commit()
注意:需要先开启事务处理。
回滚事务
bool QSqlDatabase::rollback()
注意:需要先开启事务处理。
判断事务可用性
bool QSqlDriver::hasFeature(DriverFeature feature) const [pure virtual]
获取错误信息
QSqlError QSqlDatabase::lastError() const
获取可用的数据库驱动名列表
QStringList QSqlDatabase::drivers() [static]
驱动名可用性
bool QSqlDatabase::isDriverAvailable(const QString & name) [static]
注册用户驱动
void QSqlDatabase::registerSqlDriver(const QString & name, QSqlDriverCreatorBase * creator) [static]
例:
QSqlDatabase::registerSqlDriver("MYDRIVER",new QSqlDriverCreator<MyDatabaseDriver>); QSqlDatabase db = QSqlDatabase::addDatabase("MYDRIVER");
相关文章推荐
- QT数据库连接必备QSqlDatabase
- Qt数据库教程(三) 数据库的连接和查询(一)
- QT 连接多个数据库,必须指定不同的连接名字
- qt 数据库连接相关问题
- Qt连接数据库
- ubuntu下 QT 连接各种数据库报错解决(QSqlDatabase: * driver not loaded )
- QT - QODBC数据库编程 --- 连接 MS Access (1)
- Qt数据库操作 连接SQLite和MySQL数据库实例
- QT数据库连接操作基本学习教程
- 记录:编译Qt5.0连接MySql5.5数据库的驱动
- 发布的QT程序无法连接数据库的问题
- Qt中通过ODBC连接MSSQL数据库
- jdbc连接数据库 必备
- QT连接数据库
- QT 连接数据库的详细步骤
- SQLServer 2005数据库连接字符串 连接sql2005必备资料
- QT连接多种数据库f方法及测试
- QT与数据库连接实例
- Qt数据库操作 连接SQLite和MySQL数据库实例
- QT连接数据库