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:
Codigo Fuente
DescargarEjercicio
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.
Ahora agregaremos nuestras referencias, damos clic derecho en References dentro de nuestro proyecto y despues clic en Agregar referencia....
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.
Agregamos la referencia en nuestra clase principal Program utilizando la siguiente instrucción:
using System.Configuration;
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>
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....
Una vez que la ventana se muestra, buscamos el elemento clase y le damos el nombre Person para finalizar damos clic en Agregar.
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:
Ahora agregaremos la referencia System.IO; a nuestro codigo.
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:
Declararemos en nuestro Program.cs un metodo estatico que reciba un string nos regrese una lista del objeto Person.
A continuación un foreach que itere cada una de las lineas del archivo.
Quedando de la siguiente forma:
A continuación crearemos un array de string donde realizaremos una división de lineas con el metodo Split de la clase string.
Para finalmente declarar un switch con cada valor del arrar devuelto por Split para quedar de la siguiente forma:
El siguiente paso es agregar el metodo para realizar la conexión a la base de datos, el cual es el siguiente:
Ahora agregaremos en el App.config la sección de connectionStrings quedando de la siguiente forma:
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:
.
Ahora abriremos nuestro Sql Server Management y nos conectaremos a la base de datos en la cual insertaremos los datos.
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.
Es hora de probar nuestra aplicación, ponemos un punto de interrupción en la instrucción sqlCommand.ExecuteNonQuery();.
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.
Referencias