QT数据库连接必备QSqlDatabase

转载自:http://blog.csdn.net/u011512437/article/details/43927403


每个应用都需要或多或少的保存一些数据,当不想用文件保存数据时,最好的选择恐怕就是数据库了。数据库拥有管理数据方便,数据可读性高等优点。那么在QT中又怎样使应用与数据库关联呢?!下面来介绍一个QSqlDatabase类(不是操作数据库,只连接数据库,操作数据请看数据库操作):

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");
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值