Deyvi's Weblog

Enterate de mi vida personal; mis logros,
penurias, lloriqueos, celebraciones, traumas existenciales,
ideas, planes, etc.. etc.. etc...y es gratis =)

Siempre me consultaron a cerca de como correr un sistema en red con Visual Studio 2005, Una alternativa por una cuestion de simplicidadad es realizarlo via ODBC para ello el acceso a datos se tiene q hacer via ODBCConnection, ODBCDataAdapter, ODBCCommand, etc...

Peeeeero cuando se emplea los comandos para ejecutar instrucciones SQL el manejo es obviamente diferente cuando se emplea parámetros en los comandos:


Lo normal es que estructures tu codigo mas o menos asi:



string sybaseConnectionString = ConfigurationManager.ConnectionStrings["sybaseConnection"].ConnectionString; //o la conexion segun tu origen de datos.



sybConn = new OdbcConnection(sybaseConnectionString);



OdbcCommand _cmdObj = new OdbcCommand();

DataSet _ds = new DataSet();

_cmdObj.CommandText = "aqui el nombre de tu procedimiento almacenado";

_cmdObj.CommandType = CommandType.StoredProcedure;

_cmdObj.Connection = sybConn;

OdbcParameter myparameter = new OdbcParameter(("@FirstParameter",OdbcType.VarChar,20)
;myparameter.Value = "Passing Value";
_cmdObj.Parameters.Add(myparameter);

OdbcParameter myparameter = new OdbcParameter(("@Second Parameter",OdbcType.VarChar,20);
myparameter.Value = "Passing Value";
_cmdObj.Parameters.Add(myparameter);

OdbcDataAdapter _sybDA = new OdbcDataAdapter();

_sybDA.SelectCommand = _cmdObj;

_sybDA.Fill(_ds);



Peeeero esto no funciona; debido a la forma como se hace el llamado al procedimiento almacenado con ODBC, el mismo que debe ser asi:



_cmdObj.CommandText = "{CALL Your procedure name (?,?)}";

_cmdObj.CommandType = CommandType.StoredProcedure;

_cmdObj.Connection = sybConn;
OdbcParameter parameter = _cmdObj.Parameters.Add("@FirstParameter ", OdbcType.VarChar,20);
parameter.Value = "Passing Value";

parameter = _cmdObj.Parameters.Add("@Second Parameter", OdbcType.VarChar);

parameter.Value = "Passing Value";
OdbcDataAdapter _sybDA = new OdbcDataAdapter();

_sybDA.SelectCommand = _cmdObj;
_sybDA.Fill(_ds);

Pequeño detalle, pero que sacará de mil apuros.



Archivo