我想做下一个查询:
SELECT table_name, column_name, data_type, is_nullable, ...
FROM information_schema.columns
在sqlite数据库上。
我检查了
PRAGMA table_info(table_name);
但不符合我的需要,只需检查一个表的字段。
我检查了
select * from sqlite_master where type = 'table';
但这只是获取表名和创建查询。
有没有办法将这些“加入”方法?或任何其他建议或想法? TX
答案 0 :(得分:4)
我知道您不想听到这个,但是您无法使用SQLite从SQL进行连接。 table_info
pragma未映射到标准查询,而是映射到SQLite源中的虚拟机程序。该程序仅支持单个表。完全停止。 :)
如果您的需求只是测试,那么编写脚本来做您想做的事情应该不会太难。否则,您必须将此内容写入您的应用程序。无论哪种方式,您将使用sqlite_master查询从sqlite_master中选择表名,使用sqlite3_mprintf("pragma table_info(%s);",name)
从中进行SQL查询,并准备/执行该查询。
答案 1 :(得分:3)
SQLite C API对此类内容有更多的支持;例如,请参阅this page。
答案 2 :(得分:3)
仅供参考,如果您使用的是.Net,则可以使用DbConnection.GetSchema方法检索通常位于INFORMATION_SCHEMA中的信息。如果你有一个抽象层,你可以为所有类型的数据库使用相同的代码(注意MySQL似乎是限制数组的前2个参数)。