代码之家  ›  专栏  ›  技术社区  ›  Jhonny D. Cano -Leftware-

sqlite上的schema.columns信息

  •  7
  • Jhonny D. Cano -Leftware-  · 技术社区  · 15 年前

    我想进行如下查询:

    SELECT table_name, column_name, data_type, is_nullable, ... 
    FROM information_schema.columns
    

    我查过了

    PRAGMA table_info(table_name); 
    

    但不适合我的需要,只需检查字段 桌子

    select * from sqlite_master where type = 'table';
    

    有没有办法将这些方法“连接”起来?或者其他任何建议或想法?德克萨斯州

    3 回复  |  直到 15 年前
        1
  •  4
  •   Steven Fisher    15 年前

    我知道您不想听这些,但是您将无法使用SQLite从SQL进行连接。这个 table_info pragma没有映射到标准查询,而是硬编码到SQLite源中的虚拟机程序。该程序只支持一个表。句号:)

    如果您的需求只是测试,那么编写脚本来完成您想要的任务应该不会太难。否则,您必须将其写入应用程序中。无论哪种方式,您都将使用sqlite\u主查询从sqlite\u主查询中选择表名,然后使用 sqlite3_mprintf("pragma table_info(%s);",name) ,并准备/执行。

        2
  •  3
  •   Doug Currie    15 年前

    SQLite C API对这类事情有更多的支持;看见 this page

        3
  •  3
  •   user276648 Jeremy Cook    13 年前

    仅供参考,如果您使用的是.Net,则可以使用DbConnection.GetSchema方法来检索通常位于信息模式中的信息。如果您有一个抽象层,那么对于所有类型的数据库,您都可以使用相同的代码(请注意,MySQL似乎会切换限制数组的前2个参数)。