在Qt中,有几个步骤需要完成,直到可以完成数据库访问。
第一步是按连接名称添加数据库:
QSqlDatabase::addDatabase("QMYSQL", connectionName);
在此之后,我可以使用open()
和close()
来打开/关闭相应的连接。
也可以使用以下调用删除该数据库:
QSqlDatabase::removeDatabase(connectionName);
我的应用程序做了很多,因为它为了很多目的访问并行进程中的各种数据库。此外,它是一个服务器应用程序,运行很长时间而不重新启动。
对我来说,由于可能的网络问题和服务器端的连接有限,保持连接始终打开是一个坏主意。
然而addDatabase()
呢?在没有直接调用addDatabase()
之后调用removeDatabase()
是否有任何损害或好处(但仅在应用程序退出时)?或者最好直接对这些电话进行配对?
答案 0 :(得分:1)
我们可以阅读有关QSqlDatabase
:
警告:如果添加的连接名称与现有连接相同 连接,新连接替换旧连接。如果你这样称呼 函数不止一次而没有指定connectionName,默认值 连接将被替换。
因此,当您在特定名称中多次添加数据库或未指定任何(默认连接)时,将替换连接,并且不会调用removeDatabase
。
但我认为你应该为每个可能的数据库启动应用程序时调用QSqlDatabase::addDatabase()
一次,并且每次要在不同的部分访问它时都不需要添加然后删除连接。
QSqlDatabase::addDatabase
只为相关的SQL驱动程序和返回的QSqlDatabase
对象分配连接名称。只有在您致电QSqlDatabase::open
时,数据库才会打开。因此,当您在使用数据库的不同位置添加数据库时,将更改使用相同连接名称的所有QSqlDatabase
对象。因此,如果您使用具有相同连接名称的许多QSqlDatabase
对象,则可能会产生大量开销。
在代码的不同部分,您可以使用QSqlDatabase::database
返回名为connectionName
的数据库连接。这样,您就可以在开始时实际调用QSqlDatabase
的不同部分中访问addDatabase
实例。