Llenar una lista para insertar datos desde un archivo de texto

Fecha de Publicación: 2021-04-06

Introducción

En este ejercicio importaremos datos desde un archivo de texto para ser insertados en una base de datos en el lenguaje C#.

Requisitos

  • Visual Studio Community 2019
  • SqlServer Management Studio



Resultado

La siguiente imagen muestra lo que obtendremos al realizar este ejercicio:



00_ssidt


Codigo Fuente

Descargar

Ejercicio

Comenzaremos como siempre abriendo nuestro Visual Studio y creando nuestra solución con un proyecto de consola para este ejemplo lo llamare SqlServerInsertDataTable. Si no tienes conocimiento de como crearlo te dejo el link donde puedes aprender como hacerlo y regresar despues a este ejercicío.

01_flftf


Ahora agregaremos nuestras referencias, damos clic derecho en References dentro de nuestro proyecto y despues clic en Agregar referencia....

02_flftf


Una vez desplegada la ventana damos clic en Framework y despues buscamos System.Configuration y nos cercioramos que tenga la palomita como se muestra en la imagen, al finalizar damos clic en Aceptar.

03_flftf


Agregamos la referencia en nuestra clase principal Program utilizando la siguiente instrucción:

    
    using System.Configuration;
    
    
04_flftf


Abrimos el archivo App.config y agregamos una key con la referencia al archivo donde tenemos los datos almacenados.

    
    '<'appSettings>
    '<'add key="FileReader" value="C:\Devel\CSharp\PersonData.txt"/>
    '<'/appSettings>
    
    
05_flftf


Ahora agregremos una nueva clase en mi caso se llamara Person para crear el objeto con el cual llenaremos los datos, esto lo hacemos dando clic derecho sobre nuestro proyecto y despues en Agregar y luego Nuevo elemento....

06_flftf


Una vez que la ventana se muestra, buscamos el elemento clase y le damos el nombre Person para finalizar damos clic en Agregar.

07_flftf


Procederemos a declarar las propiedades correspondientes para la clase Person que acabamos de crear.

    
public class Person
{
    public int IdReg { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public bool Gender { get; set; }
    public string Country { get; set; }
    public int Age { get; set; }
    public DateTime Date { get; set; }
    public string Id { get; set; }
}
    
    

Quedando de la siguiente forma:

08_flftf


Ahora agregaremos la referencia System.IO; a nuestro codigo.

09_flftf


Declaramos la linea donde leeremos desde App.config el valor del parametro FileReader y en la segunda el contenido del mismo, que en este caso es el archivo de texto.

    
strFileReader = ConfigurationManager.AppSettings["FileReader"].ToString();

strBuffer = File.ReadAllText(strFileReader);
    
    

Quedando de la siguiente forma:

10_flftf


Declararemos en nuestro Program.cs un metodo estatico que reciba un string nos regrese una lista del objeto Person.

11_flftf


A continuación un foreach que itere cada una de las lineas del archivo.

12_flftf


Quedando de la siguiente forma:

13_flftf


A continuación crearemos un array de string donde realizaremos una división de lineas con el metodo Split de la clase string.

14_flftf


Para finalmente declarar un switch con cada valor del arrar devuelto por Split para quedar de la siguiente forma:

15_flftf


El siguiente paso es agregar el metodo para realizar la conexión a la base de datos, el cual es el siguiente:

16_flftf


Ahora agregaremos en el App.config la sección de connectionStrings quedando de la siguiente forma:

17_flftf


Una vez terminada la configuración de la conexión a la base de datos, nos regresamos a nuestro metodo Main y aqui realizamos las declaraciones correspondientes para mandar a llenar la lista y despues las instrucciones para insertar los datos en la base de datos.
Primero declararemos el query con la instrucción insert y colocaremos cada una de las columnas que conforman la tabla, despues los valores que pasan como argumentos, si nos fijamos los valores estan como @arg que el @ indica que son valores que cambian y arg solo es indicativo de nomenclatura que son argumentos, a continuación declaramos la instrucción que configura hacia donde sera ejecutado, despues los parametros de la tabla con cada uno de los campos y sus valores correspondientes y para finalizar la instrucción que ejecutara la operación previamente declarada con el nombre de insert_query. Todo esto será una iteración de valores por cada uno que se encuentre en nuestra lista, que sera iterados por la instrucción foreach, esto se visualiza de forma más clara en la siguiente imagen: .

18_flftf


Ahora abriremos nuestro Sql Server Management y nos conectaremos a la base de datos en la cual insertaremos los datos.

19_flftf


Una vez dentro de la base de datos abrimos la tabla donde queremos insertar los datos previamente declarados en nuestra aplicación de C# en mi caso es Person.

20_flftf


Es hora de probar nuestra aplicación, ponemos un punto de interrupción en la instrucción sqlCommand.ExecuteNonQuery();.

21_flftf


Ejecutamos el programa con la tecla F5, se detendra en el punto de interrupción, presionamos F11 para realizar la ejecución de nuestra aplicación paso a paso, al presionarla no debe mandar ningún error, verificamos en nuestra base de datos y es exitosa la inserción.

22_flftf


Referencias