Web service

agurtzane
19 de Abril del 2004
Hola:
Tengo una aplicación de windows que se comunica con un web service para conectarse y desconectarse a la base de datos. Lo que quiero hacer es poner en ese web service otros 2 métodos para ejecutar las consultas:
-El primero ejecutaría las update, insert y delete:


public void ejecutarUpdate(string sql)
{
command=new OleDbCommand(sql, conec);
command.ExecuteNonQuery();
}

Y no da ningún problema.

El segundo debería ejecutar las select y devolver el OleDbDataReader para que el programa pueda trabajar con el resultado de la select, y ahí viene el problema:

public OleDbDataReader ejecutarSelect(string sql)
{
OleDbDataReader retorno;
command=new OleDbCommand(sql, conec);
retorno=command.ExecuteReader();
return retorno;
}

Me da el siguiente error:

System.Data.OleDb.OleDbDataReader cannot be serialized because it does not have a default public constructor.

¿qué debo hacer para poder devolver el dataReader resultante de la select?

Gracias

Elph
19 de Abril del 2004
No puedes devolver un datareader desde un servicio web, por q no se puede serializar un datareader, eso es ponerlo en formato binario para enviarlo via xml. Ademas creo q no se llevaria bien, pues el data reader trabaja en modo conectado a la bd.
Opciones: devuelve un dataset o un dataTable, aunq este ultimo creo(no estoy seguro) q tp se puede serializar. Tb puedes guardarte los datos en un arrayList, hashtable, array de tipo y devolverlo.
Cualquier clase q herede de IList te servira para hacer bindings como el reader.

Suerte

agurtzane
19 de Abril del 2004
Gracias, he optado por lo del dataset y funciona bien