Javaでオブジェクト情報をは、私はビューの構造の観点からSQL Serverから情報を取得する必要が
例:私は、すべてのデータベース、すべての手順、手続きのすべてのパラメータは、すべてのカラム名をリストする必要がありますテーブルからのカラムタイプ、テーブルカラムからのカラムタイプ。
これを行うにはどうすればよいでしょうか?
おかげ
Javaでオブジェクト情報をは、私はビューの構造の観点からSQL Serverから情報を取得する必要が
例:私は、すべてのデータベース、すべての手順、手続きのすべてのパラメータは、すべてのカラム名をリストする必要がありますテーブルからのカラムタイプ、テーブルカラムからのカラムタイプ。
これを行うにはどうすればよいでしょうか?
おかげ
を(少なくとも)3つの方法があります。
DatabaseMetaDataクラスを使用します。そこにはたくさんのものがあるので、詳細はJava Docsを参照してください。私はこれがすべてのデータベースエンジンで標準的なので、これが好ましい方法だと考えています。したがって、別のデータベースエンジンに切り替えると、それはまだ機能しています。このデータベースエンジンで作業しているかどうかにかかわらず、どのように使用するかを学ぶことができます。
"information_schema"に対してクエリを実行します。基本的に、これはデータベース構造に関する情報を持つデータベースです。すべてのテーブル、すべてのカラムなどをリストしたテーブルがあります。これは2番目に良い選択です。 information_schemaはデータベース間で多かれ少なかれ標準です。残念ながら、MS SQL Serverの実装は最良ではありません。
「システムテーブル」および/または「システムビュー」に対してクエリを実行します。 MS SQL Serverには、データベース構造に関する情報を持つ一連のテーブルがあります。 information_schemaと似ていますが、MS SQL Server固有のもので、計算されたフィールドやID列などの標準SQLに含まれないもののメタデータも含まれています。また、MSのinformation_schemaの実装よりも完全で信頼性の高いものです。
DB内のテーブルや特定のテーブル内のどの列のように、information_schemaとシステムテーブルも同様に良好で便利です。しかし、他に何かが必要な場合、MSのinformation_schemaの実装は、不十分であることがすぐに分かります。 Web上で、information_schemaではなくシステムテーブルを使用するように開発者を促すコメントがたくさんあります。私は非標準のものを使用するのは好きではありません。コード自体と経験の両方は移植性がありませんが、この場合はシステムテーブルを使用するのが正しいと思います。
しかし、DatabaseMetaDataは、必要なものを提供すれば、さらに優れています。
チェックアウトDatabaseMetaDataインタフェース
これは完璧です。 – Sweet