C#SqlCommand,XmlReader和输出参数
问题描述:
当我使用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中找到它。
答
由于我的意见解决你的问题,我想我会添加它作为一个答案:
我没有看到你尝试读取参数。在执行查询以查看其值后,是否真的检查过sqlCmd.Parameters [2] .Value?
我看不到你要读取参数的位置。在执行查询以查看其值后,是否真的检查过sqlCmd.Parameters [2] .Value? – Tombala 2013-05-09 14:54:15
呵呵,我以为这行“sqlCmd.Parameters.AddWithValue(”@ rest“,rest).Direction = ParameterDirection.Output;”会自动导致插入值的变化。感谢您的发布,它解决了我的问题。 – Konrad 2013-05-09 16:58:29