2012-05-04 1 views

答えて

3

を(少なくとも)3つの方法があります。

  1. DatabaseMetaDataクラスを使用します。そこにはたくさんのものがあるので、詳細はJava Docsを参照してください。私はこれがすべてのデータベースエンジンで標準的なので、これが好ましい方法だと考えています。したがって、別のデータベースエンジンに切り替えると、それはまだ機能しています。このデータベースエンジンで作業しているかどうかにかかわらず、どのように使用するかを学ぶことができます。

  2. "information_schema"に対してクエリを実行します。基本的に、これはデータベース構造に関する情報を持つデータベースです。すべてのテーブル、すべてのカラムなどをリストしたテーブルがあります。これは2番目に良い選択です。 information_schemaはデータベース間で多かれ少なかれ標準です。残念ながら、MS SQL Serverの実装は最良ではありません。

  3. 「システムテーブル」および/または「システムビュー」に対してクエリを実行します。 MS SQL Serverには、データベース構造に関する情報を持つ一連のテーブルがあります。 information_schemaと似ていますが、MS SQL Server固有のもので、計算されたフィールドやID列などの標準SQLに含まれないもののメタデータも含まれています。また、MSのinformation_schemaの実装よりも完全で信頼性の高いものです。

DB内のテーブルや特定のテーブル内のどの列のように、information_schemaとシステムテーブルも同様に良好で便利です。しかし、他に何かが必要な場合、MSのinformation_schemaの実装は、不十分であることがすぐに分かります。 Web上で、information_schemaではなくシステムテーブルを使用するように開発者を促すコメントがたくさんあります。私は非標準のものを使用するのは好きではありません。コード自体と経験の両方は移植性がありませんが、この場合はシステムテーブルを使用するのが正しいと思います。

しかし、DatabaseMetaDataは、必要なものを提供すれば、さらに優れています。

+0

これは完璧です。 – Sweet

関連する問題