SQL a texto Curso de Programación Visual Basic

Lección:

Administración de Archivos


Ejercicio:

SQL a texto 8


Objetivo:

Debe crear un programa Visual Basic 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:

Imports System
Imports System.IO
Namespace SQL2text
    Class Program
        Private Shared Sub Main(ByVal args As String())
            Dim ficheroEntrada As StreamReader = Nothing
            Dim linea As String
            Dim nombre As String
            Console.WriteLine("Not enough parameters!")
            Console.Write("Enter file name: ")
            nombre = Console.ReadLine()

            Try
                ficheroEntrada = File.OpenText(nombre)
            Catch e As Exception
                Console.WriteLine(e.Message)
            End Try

            Try

                Do
                    linea = ficheroEntrada.ReadLine()

                    If linea IsNot Nothing Then
                        Console.WriteLine()
                        Dim tableName As String = linea.Substring(12).Split(" "c)(0)
                        Dim campo As String() = linea.Substring(linea.IndexOf("(") + 1, linea.IndexOf(")") - linea.IndexOf("(") - 1).Split(","c)
                        Dim valores As String() = linea.Substring(linea.IndexOf("values (") + 9, linea.IndexOf(");") - linea.IndexOf("values (") - 9).Split(","c)
                        Console.WriteLine(tableName)

                        For i As Integer = 0 To campo.Length - 1
                            Console.Write(campo(i).Trim() & ": ")
                            Console.WriteLine(valores(i).Trim().Replace("'", ""))
                        Next
                    End If
                Loop While linea IsNot Nothing

            Catch e As Exception
                Console.WriteLine(e.Message)
            End Try

            Console.ReadLine()
        End Sub
    End Class
End Namespace