2

ここで、C# のストアド プロシージャによって設定された値を読み取る際に問題に直面しています。

  1. 変数@errorCode @errorStrを 0 に設定し、ストアド プロシージャの失敗時に「失敗」するストアド プロシージャがあります。

  2. ストアド プロシージャを呼び出す C# 関数があり、値が正しく設定されていますが、C# コードの値@errorCodeを読み取ることができません。@errorStr

  3. 私のコードは次のようになります


string op = null;

cmd.CommandText = "PopulateAnswers";
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@i_xmlreq", SqlDbType.Xml);
param.Value = xmltext;
param.Direction = ParameterDirection.Input;
cmd.Parameters.Add(param);     
cmd.Connection = Conn1;   
SqlDataReader dataReader = cmd.ExecuteReader();

if (dataReader.HasRows)
{
    op = dataReader.GetValue(1).ToString();

    if (op.CompareTo("Failed To set Answers") == 0)
    {
        WriteErrorLog("Failed to execute the stored Procedure");
        return "1:Failed to execute stored procedure ";
    }
    else
    {
        return "0:success";
    }
}

データを読み込もうとしているときにエラーが発生します。存在しない値を読み込もうとしているということです。しかし、変数 datareader にカーソルを合わせると、値を正しく表示できます。Datareader -> Results view -> [0] -> Non-static の下にあります。

4

1 に答える 1

4

値を取得する前に dataReader.Read() を呼び出す必要があります。

于 2012-06-28T18:08:59.600 に答える