0

所以我听说,当您不需要该连接时立即关闭数据库连接并在需要时重新打开它,这是一种很好的编程。所以,当我不需要它时,我一直在关闭我的连接,但是我注意到它显着减慢了我的程序(打开每个窗口大约需要 2 秒)。有什么办法可以解决这个问题?

我已将其定义QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");为全球性的,并且只是在需要时db.open();db.close();在需要时进行。此外,如果我一直保持连接打开,我的窗口会立即加载。

编辑:人们说这是因为连接可能会在使用您的程序的中途断开/断开连接,并且可能导致未保存的数据/大问题等

4

1 回答 1

1

正如其他人评论的那样,保持数据库连接打开。如果您担心连接被丢弃,您可以QSqlDatabase::isOpen()在尝试执行查询之前对其进行测试。

QSqlQuery::prepare如果您使用准备好的查询 ( ),让连接保持打开状态会更有意义。只要连接打开,准备好的查询就可用。

编辑

您可以更改非交互式会话的不活动超时(请参阅sysvar_wait_timeout)。我不是 MySQL 专家,但这可能会有所帮助

于 2013-06-29T16:29:27.573 回答