泥庭

2012年3月3日

スキーマ情報の取得

Filed under: .NET, DB — タグ: — yone64 @ 12:11 AM

DbDataReader.GetSchemaTableを利用すると、スキーマ情報を取得することができます。
ただし、取得される情報はデータプロバイダによって形式が異なるので、若干面倒な作業が発生します。

public DataTable GetSchema()
{
    DataTable dt = null;
    using (var connection = GetConnection())
    {
        connection.Open();
        var command = connection.CreateCommand();
        command.CommandText = GetSelectAllSQL();
        using (var reader = command.ExecuteReader(CommandBehavior.KeyInfo))
        {
            dt = reader.GetSchemaTable();
        }
        connection.Close();
    }
    return dt;
}

private string GetSelectAllSQL()
{
    StringBuilder sb = new StringBuilder("SELECT [");
    sb.Append(string.Join("], [", columns.Select(c => c.Item1).ToArray()));
    sb.Append("] FROM [").Append(tableName).Append("]");
    return sb.ToString();
}

取得できるデータの一例。

image

ただし、ここで取得できる情報は、そもそもビルド時に判明していることが多く、実行時に動的に取得しないほうがパフォーマンス的にも有利になる気がします。

広告

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com で無料サイトやブログを作成.

%d人のブロガーが「いいね」をつけました。