jueves, 14 de septiembre de 2023

DataTable FrameWork 7 de .NET

Introducción.

 "Representa una tabla de datos en memoria" (Microsoft, 2023). Así es como se define en la referencia de Microsoft en línea, para los clásicos aquellos “cursores” de Microsoft FoxPro que, a diferencia de éstos, en .NET se cuenta con varios métodos y propiedades además que es homogéneo a la plataforma de desarrollo independientemente del motor de donde provenga la tabla.

A continuación, se muestra algunas operaciones con DataTable en Visual Studio 2022 usando el lenguaje de programación de C#.

 Crear el DataTable

          DataTable dt = null;

            string comando = "select * from tdbf";

            cadenaConexion = "Provider=vfpoledb;Data Source=rutadbf;Collating Sequence=machine";

            OleDbConnection cnn = new OleDbConnection(cadenaConexion);

            try

            {

                cnn.Open();

                OleDbCommand cmd = new OleDbCommand(comando, cnn);

                OleDbDataAdapter da = new OleDbDataAdapter();

                da.SelectCommand = cmd;

                dt = new DataTable();

                dt.Locale = System.Globalization.CultureInfo.InvariantCulture;

                try

                {

                    da.Fill(dt);

                }

                catch (Exception ex)

                {

                    Console.WriteLine(ex.Message);

                }

            }

            catch (Exception)

            {

 

                throw;

            }

 

En este código podemos ver como una tabla de un software que se quedó en su versión de 32 bits como lo es MS FoxPro gracias a las librerías de .NET lo puede leer primero utilizando un OleDbAdapter (objeto da) y a través de un comando select, utilizando el método Fill() es como poblamos el DataTable con todo el contenido de la tabla tdbf. Comentaré la analogía que normalmente hacía a mis alumnos cuando explicaba del adaptador y que acababa de vivir al encargar un teléfono móvil que me llegó con un cargador para Europa o Asia y entonces tuve que comprar un “adaptador” para nuestras tomas de corriente de 120v de América, así mismo la tabla puede venir de MS FoxPro, de Oracle, de Microsoft SQL Server, SQLite, etc. Para que al final quede en un objeto de .NET el cual inclusive puede ser modificable e impactar a la estructura origen que no es tema de este artículo.

Leer el nombre de las columnas de un DataTable

            string[] aNamesCols = new string[dt.Columns.Count];

            for (int i = 0; i < dt.Columns.Count; i++)

            {

                aNamesCols = dt.Columns[i].ColumnName;

            }

En el ejemplo anterior vamos a crear un arreglo de cadenas (strings) que contiene el nombre de las columnas del DataTable que se acaba de crear en el primer ejemplo de código gracias a las propiedades Count y ColumnName de las columnas (Columns) del DataTable.

Recuperar los valores de las columnas de un DataTable

               

                   int cols = torigen.Columns.Count;

 

  foreach (DataRow row in torigen.Rows)

                  {

                    for (int i = 0; i < cols; i++)

                    {

                        if (row[i].GetType() == typeof(string))

                        {

                            InsCmd = InsCmd + "'" + row[i] + "',";

                        }

                        else

                        {

                            InsCmd = InsCmd + row[i] + ",";

                        }

                    }

 

Si queremos obtener los valores de una columna (campo en el argot de los lenguajes XBase) podemos realizar el código mostrado arriba donde para empezar solicitamos el número de columnas, luego recorremos la colección de Rows (registros o tuplas en el lenguaje formal de las bases de datos) y de cada objeto Row (row) accesamos a él, por medio de su índice (segundo ciclo que recorre las columnas de la tupla).

Un extra a este código de ejemplo es la condición row[i].GetType() == typeof(string) donde de manera intuitiva (o diciendo coloquialmente “le dimos como el burro que toco la flauta”) el compañero Paco Díaz y un servidor programamos para saber si el dato extraído era de cadena (string) u otro tipo de dato ya que se estaba construyendo una instrucción insert de SQL.

Hasta aquí el contenido del post y seguimos escribiendo hallazgos en el vasto mundo que ahora cuenta con un colaborador más eficaz como lo son las plataformas de inteligencia artificial.

Bibliografía

Microsoft. (14 de septiembre de 2023). Microsoft Learn. Obtenido de Referencia de .NET 7: https://learn.microsoft.com/es-es/dotnet/api/system.data.datatable?view=net-7.0

No hay comentarios:

Publicar un comentario

Python y el algebra lineal (2)

 Suma y resta de vectores y multiplicación de un escalar por un  vector Para la suma y resta de vectores los arreglos y/o vectores deben ser...