2012-06-28 1 views
2

여기서 C#의 저장 프로 시저에 의해 설정된 값을 읽는 데 문제가 있습니다.C#에서 저장 프로 시저에 의해 설정된 값 읽기 C#

  1. 나는 변수 0-@errorCode@errorStr 및 저장 프로 시저의 실패에 "실패"를 설정하는 저장 프로 시저가 있습니다.

  2. 저장 프로 시저를 호출하는 C# 함수가 있는데 값이 올바르게 설정되어 있지만 @errorCode@errorStr의 값을 C# 코드를 통해 읽을 수 없습니다. 내가 데이터를 읽을하려고하는 동안 오류가 점점 오전


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 -> 결과보기 -> [0] -> Non-static 아래에 있습니다.

  • +1

    dataReader.GetValue (1)은 GetValue (0) 여야합니다. 열 기반 인덱스는 0입니다. – Mangist

    +0

    사실 나는 errorCode와 errorStr의 두 열을 가지고 있습니다. 그래서 나는 0과 1 둘 다 시도했다. 작동하지 않습니다. – Laavaa

    답변

    4

    값을 가져 오기 전에 dataReader.Read()를 호출해야합니다.

    +0

    예, 당신 말이 맞아요. – Mangist

    +0

    내가 관찰 한 것은 다음 (dataReader.Read()) 동안 변경 한 경우입니다. { op = dataReader.GetValue (1) .ToString(); if (op.CompareTo ("대답을 설정하지 못했습니다") == 0) { WriteErrorLog ("저장 프로 시저 실행 실패"); "1 : 저장 프로 시저 실행 실패"; } else { return "0 : success"; } } 작동하지 않습니다 – Laavaa

    +0

    저장 프로 시저 코드를 게시 할 수 있습니까? –

    관련 문제