c# - Trouble with parameterized query -


i'm having trouble parameterized query in odbc works when i'm working sqlclient objects.

using (odbcconnection conn = new odbcconnection()) {     conn.connectionstring = myconnectionstring;     conn.open();      using (odbccommand comm = new odbccommand())     {         comm.connection = conn;         comm.commandtext = "select mytable.mycolumn myschema.mytable mycolumn = @myparam";         comm.parameters.add(new odbcparameter("@myparam",myvalue));          using (odbcdatareader reader = comm.executereader)         {             //do stuff         }      } } 

the message

error [42s22] [ibm][cli driver][db2/aix64] sql0206n "@myparam" not valid in context used. sqlstate=42703

but if i'm using sqlclient namespace can replace odbc sql everywhere above , works fine. missing?

from odbcparameter.parametername property

instead of named parameters, odbc .net provider uses positional parameters marked question mark (?) in syntax of command text. parameter objects in odbcparametercollection , actual parameters accepted stored procedure or parameterized sql statement correspond each other based on order in odbcparameter objects inserted collection instead of parameter name.

that's why should use parameters as;

comm.commandtext = @"select mytable.mycolumn myschema.mytable                      mycolumn = ?"; comm.parameters.add(new odbcparameter("@myparam",myvalue)); 

actually, doesn't matter write parameter name in odbcparameter constructor because real important thing order odbcparameter parameters.

that's why both bottom lines work commandtext because have 1 parameter :-)

comm.parameters.add(new odbcparameter("user2320861",myvalue)); comm.parameters.add(new odbcparameter("meaningless string",myvalue)); 

Comments

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -