none
Validar mi cadena de conexión y saber qué datos no son válidos. RRS feed

  • Pregunta

  • Buenas tardes amigos del foro:

    Hoy estuve implementando una parte de mi codigo de acceso a datos y me di cuenta que necesitaba validar los datos de la cadena de conexión de mi aplicacion.

    Es que tengo un formulario en donde se escribe el nombre del servidor, de la base de datos, usuario, etc. para establecer una cadena de conexión y guardarla, y de esta manera utilizarla siempre.´

    Utilicé la clase SqlConnectionStringBuilder para generar mi cadena de conexion sin embargo esta clase sólo genera una cadena válida AÚN CON DATOS INVÁLIDOS que se ingresan, lo que yo quisiera es una manera de que me avise si la cadena de conexión contiene parametros no válidos.

    Tal vez alguien sepa las reglas de formacion de cadena de conexion con datos validos, los caracteres que son válidos dependiendo de cada parametro asi podria construirme validadores y validar los datos que se ingresan antes de construir la cadena de conexion. O quizas se pueda hacer con expresiones regulares.

    Gracias por sus respuestas.


    sábado, 19 de marzo de 2011 22:18

Todas las respuestas

  • "Johnson Kenedy" escribió:

    > Utilicé la clase SqlConnectionStringBuilder para generar mi cadena de
    > conexion sin embargo esta clase sólo genera una cadena válida
    > AÚN CON DATOS INVÁLIDOS que se ingresan, ...

    Hola:

    ¿Qué parámetros "inválidos" has introducido para que la clase SqlConnectionStringBuilder te genere una cadena de conexión válida?

    Si intento añadir el parámetro «Provider», que es un parámetro que no está soportado por el proveedor de datos .NET para SQL Server, obtengo una excepción en tiempo de ejecución, tal y como era de esperar:

            Dim csb As New SqlConnectionStringBuilder()

            csb.Add("Provider", "valor del parámetro")

            MessageBox.Show(csb.ConnectionString)

     

    Un saludo

     


    Enrique Martínez
      [MS MVP - VB]

    domingo, 20 de marzo de 2011 17:01
  • hola

    podrias crear un metodo de validacion que los datos estan correcto y se puede lograr la validacion

    por ejemplo si el usuario ingreso un nombre o ip de servidor incorrecto podrias validarlo

    algo que no has mencionado es con que lenguaje programas, ser c#, vb.net ?

     

    private bool ValidarConexion(string connstring)
    {
        try
        {
            using(SqlConnection conn = new SqlConnection(connstring))
            {
                conn.Open();
               
                return true;
            }
        }
        catch
        {
            return false;
        }
       
    }

     

    o sea si la conexion se logra correctamente ese metodo devolvera vedadero por lo tanto son validos los datos ingresados, si devuelve false le indicas al usuario que algo ingreso mal

     

    lo usarias

    //aqui armas el connstring con el SqlConnectionStringBuilder

    if(!ValidarConexion(strBuilder.ConnectionString)){

       MessageBox.Show("datos de la cadena de conexion invalidos");

       return;

    }

    //aqui grabas el connection string porque esta correcto

     

    Nota, si necesitas esto mismo en vb.net puedes traducirlo con ayuda de estas tools

     

    Convert C# to VB.NET

    Code Converter

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 20 de marzo de 2011 20:10
  • Hola bueno lo estoy trabajando en C# 2008.

    El código basicamente es este:

    SqlConnectionStringBuilder conexionBuilder = new SqlConnectionStringBuilder();
    
    
    
    conexionBuilder.DataSource = "Cadena inválida e+`r4¡ 2´+ `4´r34p'¡rt·$ ^*"; // Yo pensaba que aqui deberia mandarme una excepción, sin embargo igual coge esta cadena
    
    
    
    conexionBuilder.InitialCatalog = "Cadena inválida2 efwejo ¨_ç+`;:;; ´-\'";
    
    
    
    

    O sea si se dan cuenta yo queria validar la cadena de conexión por cada parámetro y asi mostrar en el formulario que campo esta mal. Y como pueden ver el problema no esta en las palabras claves, sino en los valores.

    Bueno con la forma de validacion que me aconseja Leandro Tuttini tambien lo he pensado, pero la cuestion esta en que se tendria que hacer varias consultas al  servidor (con su respecitva demora).

     

     

     


    domingo, 20 de marzo de 2011 21:47
  • hola

    el tema es que esa clase SqlConnectionStringBuilder no conecta contra la db para validar, solo es un helper para armar el string de la cadena de conexion, pero nada mas que eso

    para validar que este correcta deberias probar la conexion, por eso sugeria la creacion de ese metodo

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 20 de marzo de 2011 23:53