Re: npgsql

Ricardo Javier Aranibar León <[email protected]> Wed, 29 Jun 2011 14:53:13 -0400
Newsgroups gmane.comp.gnome.mono.hispano
Message-ID <[email protected]>
Muchas gracias Juan por la respuesta.

Efectivamente en otros proyectos separo el codigo en la capa de
presentación, negocios, servicios y datos.
El código que puse es de ejemplo.

Como le comentaba estoy trabajando con npgsql y lo que necesito es que me
devuelva la consulta en un xml esto lo realice con postgresql select
query_to_xml en npgsql no encontré un comando parecido al q se utiliza con
SqlServer y Oracle el ExecuteXmlReader por eso arme un pequeno ejemplo.
En el ejemplo que me mando tendría que ir verificando cada tipo de dato al
retornar en una lista no?

list.Add (new TipoObjecto { Propiedad1 = reader.GetString (0), Propiedad2 =
reader.GetInt32 (1) });

por ejemplo cuando trabajo con oracle como lo podria traducir para usarlo
con npgsql????
gracias

     /// <summary>
    /// Lee un objeto a partir de su ID
    /// </summary>
    /// <typeparam name="T">Tipo de la colexión de Objetos</typeparam>
    /// <param name="iD">ID del objeto</param>
    /// <param name="TableName">Nombre de la Tabla</param>
    /// <param name="singleType">Tipo de Objeto</param>
    /// <returns>Colexión de Objetos leidos</returns>
    public T Read<T>(Int64 iD, string TableName, Type singleType)
    {
      System.Reflection.
      PropertyInfo[] propiedades;
      String sqlText;
      XmlReader xmlReader;
      OracleCommand cmd = Connection.CreateCommand();
      XmlSerializer serializer = new XmlSerializer(typeof(T));

      try
      {
        propiedades = singleType.GetProperties();
        sqlText = "SELECT ";
        foreach (System.Reflection.PropertyInfo propiedad in propiedades)
        {
          if (propiedad.PropertyType.Namespace !=
"System.Collections.Generic")
          {
            sqlText = sqlText + propiedad.Name.ToUpper() + ",";
          }
        }
        sqlText = sqlText.Substring(0, sqlText.Length - 1);
        sqlText = sqlText + " FROM " + TableName + " WHERE ID = " +
Convert.ToString(iD);

        cmd.CommandText = sqlText;
        cmd.XmlCommandType = OracleXmlCommandType.Query;
        cmd.XmlQueryProperties.RootTag = typeof(T).Name;
        cmd.XmlQueryProperties.RowTag = singleType.Name;
        cmd.BindByName = true;
        xmlReader = cmd.ExecuteXmlReader();
        return (T)serializer.Deserialize(xmlReader);
      }
      catch (OracleException ex)
      {
        if (ex.Number == 6550) mensaje = "No tiene privilegios para
seleccionar esta Tabla";
        else mensaje = ex.Message; ;
        return (T)typeof(T).GetConstructor((new Type[] { })).Invoke(new
object[] { });
      }
      finally
      {
        cmd.Dispose();
      }
    }

_______________________________________________
Mono-hispano mailing list
[email protected]
https://listas.hispalinux.es/mailman/listinfo/mono-hispano