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

问题描述 投票:8回答:2

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

c# sqlite system.data.sqlite
2个回答
17
投票

您无法使用我所知道的SELECT语句来执行此操作(尽管您可能想在main数据库中查看,但是该数据可能存储在此处)。但是,有一个解决方案。如果执行以下语句,它将返回当前连接所附加的数据库:

PRAGMA database_list;

第一行将始终为主数据库,第二行将始终为临时数据库。任何其他数据库都在前两个之后。您可以像在c#中的代码中执行SELECT语句一样(或其他任何方式)对数据库运行此语句。

这里是一个很好的参考:

SQLite PRAGMA statement reference

祝你好运!


0
投票

发布时接受的答案是正确的,但是在SQLite 3.16.0和更高版本中,也可以使用所谓的pragma functions访问大多数副作用免费编译指示。

这意味着您可以写:

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完全是可选的,但非常有用,因为这些实用程序函数返回的列名称在任何地方都没有记录。

尽管请注意,它们未被记录的部分原因是'此功能是实验性的,随时可能更改'。

© www.soinside.com 2019 - 2024. All rights reserved.