在Qt中,需要完成几个步骤才能完成数据库访问。管理数据库和连接的生命周期
的第一步是连接名称添加数据库:
QSqlDatabase::addDatabase("QMYSQL", connectionName);
在此之后,我可以使用open()
和close()
打开/关闭相应的连接。
该数据库也可以使用下面的调用将其删除:
QSqlDatabase::removeDatabase(connectionName);
我的应用程序这个了很多,因为它访问的并行处理各种数据库进行了大量的目的。它也是一个服务器应用程序,运行很长时间而不会重新启动。
在我看来很明显,由于可能的网络问题和服务器端的有限连接,始终保持连接打开是一个糟糕的主意。
但是addDatabase()
呢?在拨打addDatabase()
而没有直接拨打removeDatabase()
后(但仅在应用程序退出时)是否有任何伤害或好处?或者在任何时候直接配对这些电话会更好吗?
目前,如果使用contains()之前添加了连接名称,我不会调用addDatabase()。所以我可以防止连接被不必要地替换。 – Silicomancer 2014-12-04 07:07:09
你是否知道在每次访问之前/之后调用addDatabase()/ removeDatabase()时可以花费多少代价(从很多不必要的代码行开始)? – Silicomancer 2014-12-04 07:07:31
@Silicomancer如果您使用许多具有相同连接名称的'QSqlDatabase'对象,那么如果在每个使用的部分中添加数据库,则可能会产生大量开销。这是因为当您调用addDatabase时,所有使用相同连接名称的'QSqlDatabase'对象都会更改。我更新了答案。 – Nejat 2014-12-04 07:21:27