【问题标题】:Reading the values set by the stored procedure in SQL Server through C#通过 C# 读取 SQL Server 中存储过程设置的值
【发布时间】:2012-06-28 18:00:44
【问题描述】:

我在读取 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 -> Results view -> [0] -> Non-static 下。

【问题讨论】:

  • dataReader.GetValue(1) 应该是 GetValue(0)。它是基于 0 的列索引。
  • 我实际上有两列 errorCode 和 errorStr 。所以我尝试了 0 和 1 。它不工作。

标签: c# sql-server-2008 tsql c#-4.0


【解决方案1】:

您需要先调用 dataReader.Read() 才能获取值。

【讨论】:

  • 我观察到的是,如果我更改为以下 while(dataReader.Read()) { op = dataReader.GetValue(1).ToString(); if (op.CompareTo("无法设置答案") == 0) { WriteErrorLog("无法执行存储过程"); return "1: 执行存储过程失败"; } else { 返回“0:成功”; } } 这不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
相关资源
最近更新 更多