Cómo llenar un control comboBox de Windows Forms con una colección en c# .Net

Existen muchas formas de llenar un control comboBox en Windows Forms obteniendo los datos de varias fuentes. En este artículo veremos como llenarlo a través de un objeto de tipo colección (List) conteniendo objetos  tuplas (Tuple), obteniendo los datos con el que llenaremos los tuplas de los resultados de una consulta a una base de datos. El código asume que ya se abrió una conexión a la base de datos y se ejecutó una consulta y se están leyendo los datos que arrojó la misma.

 

El código está comentado para su mejor entendimiento.

/* Lista de items para el combobox, los items son representado 
   por tuplas de 2 valores: un entero y otro de tipo cadena */
List<Tuple<Int32, String>> listaItems = new List<Tuple<int, string>>();
                
// Leemos los registros 
while (lector.Read())
{
/* Añade ala lista los items a mostrar en el combobox, creando objetos tupla con valores
   obtenidos de la base de datos*/
  listaItems.Add(Tuple.Create<Int32, String>(lector.GetInt32(0), lector.GetString(1)));
}
// Cierra el lector de datos
lector.Close();

// Asigna items a el combobox
comboBox1.DataSource = listaItems;

/* Asigna la propiedad a desplegar en el combobox
   En un objeto tupla la propiedad que contiene
   el primer elemento es llamada Item1, el segundo Item2
   y asi sucesivamente */
comboBox1.DisplayMember = "Item2";

// Asigna la propiedad como valores de los items del combobox
comboBox1.ValueMember = "Item1";

Espero les sea útil.

¡Hasta la próxima!

 

Como conectar a una base de datos Oracle 12c desde una aplicación .Net sin usar archivo tsnames.ora.

Enseguida les comparto el código en ¢# (c sharp) para hacer una conexión a una base de datos Oracle 12c desde una aplicación .Net sin usar archivo tsnames.ora externo que defina la conexión.

Antes de ejecutar el código sobra decir que debes contar con los controladores .Net (drives)  de conexión a Oracle 12c instalados en la máquina de desarrollo y el proyecto debe hacer referencia a la clase Oracle.ManagedDataAccess.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;


namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Crea cadena de conexion 
            String cadenaConexionOracle = "Data Source=" +
                   "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" + 
                   "(HOST=localhost)(PORT=1521))" + 
                   "(CONNECT_DATA=(SERVICE_NAME=orcl)));" +
                   "User Id = c##usuariotest; Password = lcdusuariotest;";
            // Crea conexion
            OracleConnection conexionOracle = new OracleConnection(cadenaConexionOracle);
            // Conecta
            conexionOracle.Open();
            // Confirma si la conexion fue abierta
            if (conexionOracle.State == ConnectionState.Open)
            {
                // Se ejecutan las sentencias necesarias...
                // ...
                // Si la conexion esta abierta, la cierra
                conexionOracle.Close();
            }
        }
    }
}

No olvides cambiar los valores de HOST (nombre o ip de la computadora donde está instalada la base de datos), PORT (puerto de conexión), SERVICE_NAME (nombre de la instancia de la base de datos Oracle), User Id (usuario) y Password (contraseña), por los valores correctos de tu base de datos.

¡Hasta la próxima!

Se produjo una excepción en el inicializador de tipo de ‘Oracle.DataAccess.Client.OracleConnection’

Mientras hacía la distribución de una aplicación .NET que incluían las librerías del ODT de Oracle, lanzaba el error Se produjo una excepción en el inicializador de tipo de ‘Oracle.DataAccess.Client.OracleConnection’ al hacer la conexión a la base de datos.
En mi caso había trabajado antes con una versión anterior al ODT con el que desarrollé la aplicación. Mi distribución ODT Xcopy con el que hice el “deploy” de la aplicación, era una versión anterior a la que el Visual Studio cargó.
Revise que las versiones de los dll sean los correctos y se corregirá este error.

¿Cómo hacer la distribución de una aplicación ODP.NET?

ODP.NET son los componentes de datos que sirven para que una aplicación .NET pueda comunicarse con la base de datos Oracle.
Para que la aplicación desarrollada con esta tecnología funcione en las máquina donde se instale, es necesario hacer la distribución (deployment) de estos componentes.
Este artículo en el sitio de Oracle te guia paso a paso para lograr la distribución dichos componentes.

Error al publicar los requisitos previos de una aplicacion VS Express 2008.

Cuando se especifica la opción “Descargar los requisitos previos desde la misma ubicación que mi aplicación” al hacer una publicación de una aplicación .Net 3.5 Service Pack 1 desde Visual Studio Express 8.0 se produce el error:

Error 3 La ubicación de instalación de los requisitos previos no se ha establecido en el ‘sitio web del proveedor del componente’ y no se encuentra el archivo ‘DotNetFX35SP1\dotNetFX20\aspnet.msp’ del elemento ‘.NET Framework 3.5 SP1’ en el disco. Vea la Ayuda para obtener más información.

La solución la puedes encontrar en este sitio (en inglés). Nota: descarga el .NET Framework 3.5 SP1 para tu sistema operativo en español desde aquí. No olvides descargar los paquetes del lenguaje español.