SQL a texto Curso de Programación C# Sharp

Lección:

Administración de Archivos


Ejercicio:

SQL a texto 6


Objetivo:

Debe crear un programa C# capaz de analizar comandos INSERT del lenguaje SQL y extraer sus datos para separar líneas de texto, de la siguiente manera: si el archivo de entrada contenía estas tres líneas:

inserte en personas (nombre, dirección, edad) valores ("smith, pedro", "your street", 23);

insertar en las personas (nombre, dirección, edad) valores ("juan", "calle cinco, 6", 24);

insertar en ciudades (código, nombre) valores ("a", "alicante");

El archivo resultante debe tener en cada línea el nombre de un campo, seguido de dos puntos y su valor. Además, cada registro debe ir precedido del nombre de la tabla y seguido de una línea en blanco, como esta:

nombre de la persona: smith, pedro dirección: su calle edad: 23

personas nombre: juan Dirección: calle 5, 6 edad: 24

ciudades código: un nombre: alicante


Código:

using System;
using System.IO;
namespace SQL2text
{
    class Program
    {
        static void Main(string[] args)
        {
            StreamReader ficheroEntrada = null;
            string linea;
            string nombre;

            Console.WriteLine("Not enough parameters!");
            Console.Write("Enter file name: ");
            nombre = Console.ReadLine();

            try
            {
                ficheroEntrada = File.OpenText(nombre);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            try
            {
                do
                {
                    linea = ficheroEntrada.ReadLine();
                    if (linea != null)
                    {
                        Console.WriteLine();
                        string tableName = linea.Substring(12).Split(' ')[0];
                        string[] campo = linea.Substring(linea.IndexOf("(") + 1,
                                linea.IndexOf(")") - linea.IndexOf("(") - 1).Split(',');
                        string[] valores = linea.Substring(linea.IndexOf("values (") + 9,
                                linea.IndexOf(");") - linea.IndexOf("values (") - 9).Split(',');

                        Console.WriteLine(tableName);
                        for (int i = 0; i < campo.Length; i++)
                        {
                            Console.Write(campo[i].Trim() + ": ");
                            Console.WriteLine(valores[i].Trim().Replace("'", ""));
                        }
                    }
                } while (linea != null);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Console.ReadLine();
        }
    }
}