2013-05-09 68 views
1

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

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中找到它。

+3

我看不到你要读取参数的位置。在执行查询以查看其值后,是否真的检查过sqlCmd.Parameters [2] .Value? – Tombala 2013-05-09 14:54:15

+0

呵呵,我以为这行“sqlCmd.Parameters.AddWithValue(”@ rest“,rest).Direction = ParameterDirection.Output;”会自动导致插入值的变化。感谢您的发布,它解决了我的问题。 – Konrad 2013-05-09 16:58:29

回答

0

由于我的意见解决你的问题,我想我会添加它作为一个答案:

我没有看到你尝试读取参数。在执行查询以查看其值后,是否真的检查过sqlCmd.Parameters [2] .Value?