我需要从结构的角度从 SQL Server 检索信息
示例:我需要列出所有数据库、所有程序、程序中的所有参数、表中的所有列名、表列中的列类型。
这样做的方法是什么?
谢谢
我需要从结构的角度从 SQL Server 检索信息
示例:我需要列出所有数据库、所有程序、程序中的所有参数、表中的所有列名、表列中的列类型。
这样做的方法是什么?
谢谢
有(至少)三种方式。
使用 DatabaseMetaData 类。里面有很多,所以有关详细信息,请参阅 Java Docs。我相信这是首选方式,因为它是所有数据库引擎的标准。因此,如果您切换到不同的数据库引擎,它应该仍然可以工作,并且无论您是在使用这个数据库引擎还是其他数据库引擎,您所学到的如何使用它都将适用。
对“information_schema”进行查询。基本上,这是一个包含有关数据库结构信息的数据库。它有列出所有表、所有列等的表。这是第二好的选择。information_schema 或多或少是跨数据库的标准。不幸的是,MS SQL Server 的实现并不是最好的。
对“系统表”和/或“系统视图”进行查询。MS SQL Server 中有一组表,其中包含有关数据库结构的信息。与 information_schema 类似,但它特定于 MS SQL Server,因此包括不属于标准 SQL 的内容的元数据,例如计算字段和标识列。它也比 MS 的 information_schema 实现更完整和可靠。
对于非常一般的东西,比如数据库中有哪些表或给定表中有哪些列,information_schema 和系统表同样好用。但是,如果您还需要其他任何东西,MS 对 information_schema 的实施很快就会证明是不够的。我在 Web 上看到很多评论鼓励开发人员使用系统表而不是 information_schema。我不喜欢使用非标准的东西,因为代码本身和获得的经验都不可移植,但在这种情况下,我认为他们是对的:使用系统表。
但是 DatabaseMetaData 更好,如果它可以满足您的需求。
查看DatabaseMetaData接口