SQL Programming (2): Connectiong to Databases

  使用QSqlQuery 或者QSqlQueryModel可以访问数据库,创建并打开一个或多个数据库连接。数据库连接通常是使用连接名而不是数据库名来区分彼此。你可以针对一个数据库创建多个连接。 QSqlDatabase 类创建数据库连接时,如果没有指定连接名,那么就位默认连接。当调用QSqlQuery或者QSqlQueryModel的成员函数(有一个参数为数据库连接名)时,如果未传递数据库的连接名称, 那么默认的数据库连接就会被使用。当你的应用程序只需要一个数据库连接时,那么创建一个默认连接无疑是方便的。

    注意:创建一个数据库连接和打开是不同的。创建一个连接涉及到实例化QSqlDatabase类,当打开它时,连接才会启用。下面的代码片段演示了如何创建一个默认的数据库连接,然后打开它:

 
 
1
2
3
4
5
6
QSqlDatabase db = QSqlDatabase :: addDatabase ( "QMYSQL" ) ;
db . setHostName ( "bigblue" ) ;
db . setDatabaseName ( "flightdb" ) ;
db . setUserName ( "acarlson" ) ;
db . setPassword ( "1uTbSbAs" ) ;
bool ok = db . open ( ) ;

第一行,创建一个数据库连接对象,最后一行是打开数据库连接,之后使用。在此期间,我们初始化了一些连接信息,包括数据库名,主机名,用户名和密码。上述例子中,我们连接了一个bigblue主机上的名为flightdb的MySQL数据库。函数addDatabase()的参数 "QMYSQL"指定了连接使用的数据库驱动类型。Qt所包含的数据库驱动集都列于支持的数据库驱动表中。 在上述代码段中,由于我们没有给addDatabase()函数的第二个参数连接名传递参数,所以,上述的连接会成为默认连接。举个例子,接下来我们创建了两个MySQL数据的连接,并分别命名为"first" 和"second":

 
 
1
2
QSqlDatabase firstDB = QSqlDatabase :: addDatabase ( "QMYSQL" , "first" ) ;
QSqlDatabase secondDB = QSqlDatabase :: addDatabase ( "QMYSQL" , "second" ) ;

在上述两个连接的信息初始化之后,针对每个连接调用open函数来建立真正的连接。如果调用open函数失败,那么返回值为false。这样的话,我们可以调用QSqlDatabase::lastError() 函数来获取错误信息。一旦一个连接建立之后,我们就可以在任何地方调用QSqlDatabase::database()静态函数来获取这个数据库连接的指针。如果我们没有指定连接名,那么我们将会得到默认连接的指针。举个例子:

 
 
1
2
3
QSqlDatabase defaultDB = QSqlDatabase :: database ( ) ;
QSqlDatabase firstDB = QSqlDatabase :: database ( "first" ) ;
QSqlDatabase secondDB = QSqlDatabase :: database ( "second" ) ;

如果要移除一个数据库连接,首先调用QSqlDatabase::close()来关闭数据库,之后使用静态函数QSqlDatabase::removeDatabase()来移除。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值