如何检查 sqlite 数据库是否已附加

How to check whether sqlite database is attached or not?

本文关键字:是否 数据库 sqlite 何检查 检查      更新时间:2023-10-16

我正在使用sqlite来存储我的数据。我有两个数据库。在我的应用程序中,每次有新请求出现时,我都会将第一个数据库附加到第二个数据库。问题是,如果有两个请求来了,它会显示已经在使用的数据库(它试图使用相同的别名"db"附加两次)。我想知道是否有任何方法可以检查数据库是否已附加?

PRAGMA database_list;

输出包含可用数据库完整列表的结果集。 第一列是数据库名称,第二列是数据库文件(如果未与文件关联,则为空)。主数据库始终命名为main,临时数据库始终temp

sqlite> attach "foo.db" as foo;
sqlite> pragma database_list;
0|main|
2|foo|/Users/me/tmp/foo.db

我假设您正在为多个请求重用与数据库的相同连接。由于数据库附加到连接对象,因此对于具有相同连接的第二个或进一步请求,附加将失败。因此,我认为解决方案是在建立新连接后立即附加数据库,而不是每次收到请求时都附加数据库。