2016-04-15 8 views
1

特定の結果に応じて0または1を返すストアドプロシージャがあります。私はこの手続きを手作業で実行することが多いので、SSMSで簡単に見ることができる成功/失敗の説明をコード内に0/1として表示するには、別の列名として0または1を選択します(SELECT 0 AS ThisReasonまたはSELECT 0 AS ThatReason)。C#でExecuteScalarを使用して列名にアクセスしますか?

これを処理する方法はほぼ確実ですが、興味があります.C#でExecuteScalarを使用するときに選択した列の名前を読み取ることは可能ですか?

答えて

5
ExecuteScalar

ないが、ExecuteReaderSqlDataReader.GetNameと:

using (var con = new SqlConnection("connection-string")) 
using (var cmd = new SqlCommand("storedprocedurename", con)) 
{ 
    cmd.CommandType = CommandType.StoredProcedure; 
    // parameters here... 
    con.Open(); 
    using (var rd = cmd.ExecuteReader()) 
    { 
     if (rd.Read()) 
     { 
      string column = rd.GetName(0); // first column 
      int value = rd.GetInt16(0); // or rd.GetInt32(0) 
     } 
    } 
} 
4

あなたがしたいのは、クエリの結果として2ビットの情報を取得することです。 ExecuteScalarを使用するには、最初にこれら2つのビットを1つにパックする必要があります。たとえば、成功/失敗を示す "+"または " - "で始まる文字列を返すことができ、残りの文字列は "理由"である可能性があります。

ExecuteScalarでこれを行う方法は他にありません。

関連する問題