9

是否有一个 SELECT 命令可以列出所有附加的数据库,类似于 sqlite3 中可用的 .database 命令?

4

2 回答 2

18

你不能用我知道的 SELECT 语句来做到这一点(尽管你可能想在main数据库中四处查看,这些数据可能存储在那里)。但是,有一个解决方案。如果您执行以下语句,它将返回为当前连接附加的数据库:

PRAGMA database_list;

第一行永远是主数据库,第二行永远是临时数据库。任何其他数据库都在前两个之后。您可以对数据库运行此语句,就像在 c# 中的代码中执行 SELECT 语句一样(或其他任何事情)。

这是一个很好的参考:

SQLite PRAGMA 语句参考

祝你好运!

于 2010-03-19T00:13:53.560 回答
3

发布时接受的答案是正确的,但在 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是完全可选的,但非常有用,因为这些 pragma 函数返回的列名没有记录在任何地方。

但请注意,它们未记录的部分原因是“此功能是实验性的,可能会发生变化”。

于 2019-10-17T07:48:28.367 回答