Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Getting value of OUTPUT param in .net
Message
From
25/05/2012 13:55:40
 
General information
Forum:
ASP.NET
Category:
Other
Environment versions
Environment:
C# 2.0
Miscellaneous
Thread ID:
01544303
Message ID:
01544431
Views:
18
>>>>>>>>
>>>>>>>>Given your previous post I guess you no longer need it but, in pseudo-code:
SqlCommand command = new SqlCommand();
>>>>>>>>            //Congfigure command
>>>>>>>>            SqlParameter param = new SqlParameter(Parameters[2, 0], Parameters[2, 1]);
>>>>>>>>            param.Direction = ParameterDirection.InputOutput;
>>>>>>>>            //etc
>>>>>>>>            command.Parameters.Add(param);
>>>>>>>>            //Add other params , execute....
>>>>>>>>            var v =  command.Parameters["@Param3"].Value;
>>>>>>>
>>>>>>>Can you think of why when I am trying to apply the above code, C# compiler complaints that 'object does not contain a definition for 'Value'". This is on the very last line where Parameters value is retrieved. And when I entry the open bracket key, right after the 'Parameters' Intellisense shows that object List parameter is int Index. What am I missing?
>>>>>>
>>>>>>Can you show the code you're trying?
>>>>>
>>>>>I think the difference is in how I create Parameters collection (as following):
>>>>>
>>>>>
>>>>>IDbDataParameter param = oCommand.CreateParameter();
>>>>>
>>>>>
>>>>>and the way Viv created them:
>>>>>
>>>>>
>>>>>SqlParameter param = new SqlParameter(Parameters[2, 0], Parameters[2, 1]);
>>>>>
Not sure why that wouldn't work. Assuming the command is DBCommand where does your code differ from this:
          System.Data.Common.DbCommand command = new SqlCommand();
>>>>            System.Data.IDbDataParameter p = command.CreateParameter();
>>>>            p.ParameterName = "@Param3";
>>>>            p.Direction = ParameterDirection.InputOutput;
>>>>            p.Value = cVal3;
>>>>            //etc...
>>>>            command.Parameters.Add(p);
>>>>            var v = command.Parameters["@Param3"].Value;
>>>
>>>My code is almost exactly as you have it. In place of your //etc I call oCommand.ExecuteNonQuery() (and I tried oCommandExecuteScalar() but the same result). But obviously since this code work for you, I am missing something.
>>>
>>>Question. When you press '[' after the Parameters (last line) what does your Intellisense show?
>>
>>1 of 2:
>>System.Data.Common.DbParameter DbParameterCollection[int index]
>>System.Data.Common.DbParameter DbParameterCollection[string parameterName]
>>
>>I'm using the second. What happens if you split it:
   var v = command.Parameters["@Param3"];
>>            var v2 = v.Value;
>
>I get compiler errors. Let me ask you, what tpe is your var "v"? I also get error on the "var"; what is it?

'command' was a DbCommand so it's cast to System.Data.Common.DbParameter - but since the Command instance was SqlCommand it's actually System.Data.SqlClient.SqlParameter.
i.e. In the debugger: System.Data.Common.DbParameter {System.Data.SqlClient.SqlParameter}
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform