【问题标题】:C# SqlCommand, XmlReader and output parameterC# SqlCommand、XmlReader 和输出参数
【发布时间】:2013-05-09 14:47:24
【问题描述】:

当我使用 SqlCommand 执行存储过程时,我遇到了接收输出参数值的问题。当我不是从 C# 代码而是从 SQL Server Management Studio 执行存储过程时,输出参数没有问题。这是我的 C# 代码片段:

    rest = -1;
    XmlDocument res = new XmlDocument();
    res.LoadXml("<Result><ErrCode>0</ErrCode></Result>");
    using (SqlCommand sqlCmd = Params.SqlCn.CreateCommand())
    {
    sqlCmd.CommandType = CommandType.StoredProcedure;
    sqlCmd.CommandText = "dbo.wss_doProductAdd_sp";
    sqlCmd.Parameters.Clear();
    sqlCmd.Parameters.Add(new SqlParameter("@quantity", ilosc));
    sqlCmd.Parameters.Add(new SqlParameter("@addToLog", addToLog));
    sqlCmd.Parameters.AddWithValue("@rest", rest).Direction =           ParameterDirection.Output;
    XmlReader xr = sqlCmd.ExecuteXmlReader();
    XmlNode newNode = res.ReadNode(xr);
    while (newNode != null)
    {
    res.DocumentElement.AppendChild(newNode);
    newNode = res.ReadNode(xr);
    }
    xr.Close();
    Params.SqlCn.Close();

我发现了这个: Problem reading out parameter from stored procedure using c# 我添加了一条关闭阅读器的行,但没有帮助。上面链接中的一些用户使用 LoadHits 方法,我在 MSDN 或 Google 中找不到它。

【问题讨论】:

  • 我看不到您试图读取参数的位置。执行查询后是否真的检查了 sqlCmd.Parameters[2].Value 以查看其值?
  • 哦,我还以为这行"sqlCmd.Parameters.AddWithValue("@rest", rest).Direction = ParameterDirection.Output;"将自动导致将值插入到剩余变量中。谢谢你的帖子,它解决了我的问题。

标签: c# sql-server xmlreader sqlcommand output-parameter


【解决方案1】:

既然我的评论解决了你的问题,我想我会把它添加为答案:

我看不到您试图读取参数的位置。执行查询后是否真的检查过 sqlCmd.Parameters[2].Value 以查看其值?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 2011-04-13
    • 2019-07-30
    • 2023-04-05
    相关资源
    最近更新 更多