2009年7月23日木曜日

[.NET]クエリアナライザのようにエコーバック?する

SQLServerのクエリアナライザやSQL Server Management Studioのようにprint文で実行した結果ってどうやって取得するんだろうというのが気になったので調べてみました。
調べてみると、SqlConnection.InfoMessageというイベントで処理できることがわかりました。で実装してみました。コードはこんな感じ。
private void button1_Click(object senderRoutedEventArgs e)
{
    using (SqlConnection con = new SqlConnection("接続文字列"))
    using (SqlCommand cmd = new SqlCommand("print 'aaa'"con))
    {
        con.InfoMessage += new SqlInfoMessageEventHandler(con_InfoMessage);
        con.Open();
        using (SqlDataReader dr = cmd.ExecuteReader()){
        }
    }
}


void con_InfoMessage(object senderSqlInfoMessageEventArgs e)
{
    System.Diagnostics.Debug.WriteLine(e.Message);
}

0 件のコメント: