2009-04-19 8 views
5

私はC#のC#を使ってmysqlテーブルに関するすべての詳細を取得する方法は?

1を使用してMySQLのテーブルのためにこれらの情報を取得する)名前、サイズとデータ型を含む完全な列の定義、およびヌル/ NOT NULLのような余分な情報、符号なし、オートincreament、デフォルト値、データであればタイプがenum、受け入れ値

2)すべての制約である - プライマリ/外国/チェック/ユニーク

3)すべてのインデックス

私は反対「TABLE_NAMEを説明し、」クエリを使用して、カラムに関連する基本的な情報を得ることができますデータベース。

これらの情報をすべて取得するにはどうすればよいですか?

に関して、 Anjan

答えて

6

はちょうど列の定義を取得するには...例えば

、INFORMATION_SCHEMAに対してクエリを投げる:

SELECT TABLE_NAME 
     , COLUMN_NAME 
     , DATA_TYPE 
     , CHARACTER_MAXIMUM_LENGTH 
     , CHARACTER_OCTET_LENGTH 
     , NUMERIC_PRECISION 
     , NUMERIC_SCALE AS SCALE 
     , COLUMN_DEFAULT 
     , IS_NULLABLE 
FROM INFORMATION_SCHEMA.COLUMNS 

は、追加情報を取得するために the information schema tablesを見てみましょう。

希望します。

2

あなたはSqlDataReader.GetSchemaTable()メソッドを使用することができ、これはあなたの1)のオプションのためにだけ答えているが、あなたの接続文字列は、デフォルトのデータベース(スキーマを持っている場合、これはあなたのスキーマ、に同じ接続を使用して行うことができます)オプションがを設定します。 (INFORMATION_SCHEMAスキーマへの別個の接続を作成する必要はありません)。

この方法の詳細については、hereとその使用方法の例hereを参照してください。

スキーマまたはデータベースのすべてを取得するには、SqlClientMetaDataCollectionNamesクラスを使用します。

クラスの詳細については、hereとその使用例を参照してください。here

関連する問題