Introducción.
"Representa
una tabla de datos en memoria"
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