C#SqlCommand、XmlReader和输出参数

C#SqlCommand、XmlReader和输出参数,c#,sql-server,xmlreader,sqlcommand,output-parameter,C#,Sql Server,Xmlreader,Sqlcommand,Output Parameter,当我使用SqlCommand执行存储过程时,接收输出参数的值时出现问题。当我不是从C代码而是从SQLServerManagementStudio执行存储过程时,输出参数没有问题。这是我的C代码片段: rest=-1; XmlDocument res=新的XmlDocument(); res.LoadXml(“0”); 使用(SqlCommand sqlCmd=Params.SqlCn.CreateCommand()) { sqlCmd.CommandType=CommandType.Stored

当我使用SqlCommand执行存储过程时,接收输出参数的值时出现问题。当我不是从C代码而是从SQLServerManagementStudio执行存储过程时,输出参数没有问题。这是我的C代码片段:

rest=-1;
XmlDocument res=新的XmlDocument();
res.LoadXml(“0”);
使用(SqlCommand sqlCmd=Params.SqlCn.CreateCommand())
{
sqlCmd.CommandType=CommandType.StoredProcess;
sqlCmd.CommandText=“dbo.wss\u doProductAdd\u sp”;
sqlCmd.Parameters.Clear();
添加(新的SqlParameter(“@quantity”,ilosc));
Add(新的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();
我发现:
我添加了一行关闭reader的内容,但没有帮助。上面链接中的一些用户使用LoadHits方法,我在MSDN或Google中找不到它。

由于我的评论解决了您的问题,我想我应该添加它作为回答:


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

我看不到您试图读取参数的位置。您是否确实在执行查询以查看其值后检查了sqlCmd.Parameters[2].Value?哦,我认为这行“sqlCmd.Parameters.AddWithValue(“@rest”,rest).Direction=ParameterDirection.Output;”将自动导致向rest变量插入值。谢谢您的帖子,它解决了我的问题。
    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();