gpt4 book ai didi

mysql - 管理数据库和连接生命周期

转载 作者:行者123 更新时间:2023-11-29 02:58:40 29 4
gpt4 key购买 nike

在 Qt 中,需要完成几个步骤才能完成数据库访问。

第一步是通过连接名称添加数据库:

QSqlDatabase::addDatabase("QMYSQL", connectionName);

在此之后,我可以使用 open()close() 打开/关闭相应的连接。

也可以使用以下调用删除该数据库:

QSqlDatabase::removeDatabase(connectionName);

我的应用程序经常这样做,因为它出于多种目的在并行进程中访问各种数据库。它也是一个服务器应用程序,可以运行很长时间而不会重新启动。

在我看来很明显,由于可能的网络问题和服务器端的连接受限,始终保持连接打开是一个坏主意。

但是 addDatabase() 呢?在调用 addDatabase() 而不之后直接调用 removeDatabase() 是否有任何危害或好处(但仅在应用程序退出时)?还是始终直接配对这些调用更好?

最佳答案

我们可以从Qt文档中读到关于QSqlDatabase的内容:

Warning: If you add a connection with the same name as an existing connection, the new connection replaces the old one. If you call this function more than once without specifying connectionName, the default connection will be the one replaced.

因此,当您在特定名称内或未指定任何(默认连接)多次添加数据库时,连接将被替换,并且不会调用 removeDatabase

但我认为您应该在为每个可能的数据库启动应用程序时调用一次 QSqlDatabase::addDatabase() 并且不需要在每次要访问时添加然后删除连接它在不同的部分。

QSqlDatabase::addDatabase 只是为相关的 SQL 驱动程序和返回的 QSqlDatabase 对象分配一个连接名称。只有当您调用 QSqlDatabase::open 时,数据库才会打开。因此,当您在使用数据库的不同位置添加数据库时,所有使用相同连接名称的 QSqlDatabase 对象都会更改。因此,如果您使用许多具有相同连接名称的 QSqlDatabase 对象,您可能会有很多开销。

在代码的不同部分,您可以使用QSqlDatabase::database,它返回名为connectionName 的数据库连接。通过这种方式,您可以在开始时实际调用过一次 addDatabase 的不同部分访问 QSqlDatabase 实例。

关于mysql - 管理数据库和连接生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27281487/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com