在SQLite中使用SELECT命令列出附加的数据库

bogh5gae  于 2022-11-14  发布在  SQLite
关注(0)|答案(3)|浏览(116)

是否有一个SELECT命令可以列出所有连接的数据库,类似于SQLITE3中提供的.database命令?

xqnpmsa8

xqnpmsa81#

据我所知,您不能使用SELECT语句做到这一点(尽管您可能希望在main数据库中查找,此数据可能存储在那里)。然而,有一个解决方案。如果执行以下语句,它将返回为当前连接附加的数据库:

PRAGMA database_list;

第一行将始终是主数据库,第二行将始终是临时数据库。任何进一步的数据库都在这前两个之后。您可以在数据库上运行该语句,方法与在C#代码中运行SELECT语句的方式相同(或任何其他语句)。
这里有一个很好的参考:
SQLite PRAGMA statement reference
祝好运!

zbdgwd5y

zbdgwd5y2#

被接受的答案在发布时是正确的,但在SQLite 3.16.0和更高版本中,大多数副作用自由的杂注也可以作为所谓的杂注函数访问。
这意味着你可以写道:

sqlite> .headers on
sqlite> select * from pragma_database_list;
seq|name|file
0|main|
2|a|D:\a.sqlite
3|b|D:\b.sqlite
4|c|D:\c.sqlite

.headers on是完全可选的,但非常有用,因为这些杂注函数返回的列名在任何地方都没有文档。
但请注意,它们未被记录的部分原因是“此功能是试验性的,可能会更改”。

oknwwptz

oknwwptz3#

下面的命令可以列出附加的数据库:

.databases

相关问题