Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Hartigan en 10 Junio 2010, 19:31 pm



Título: Problema al acceder a la base de datos: SQLserver y c#
Publicado por: Hartigan en 10 Junio 2010, 19:31 pm
Hola, en la aplicación en la que estoy, estoy intentando acceder a la base de datos para almacenar una serie de datos. y me salta un error en el catch (exception) que hago de la conexion. Lo raro esque al principio al realizar la conexión con la base de datos no me da problema ninguno pero luego cuando vuelvo a intentar acceder a ella sí me lo da.

Este es el código que tengo:

Código
  1. public override bool  Nuevo_Contacto(string[] datos)
  2.        {
  3.            bool exito = false;
  4.  
  5.            //Sentencia Sql
  6.            String sentenciaSQL = "insert into contactos values('" + datos[0] + "','" + datos[1] + "','" + datos[2] + "','" +
  7.                     datos[3] + "','" + datos[4] + "','" + datos[5] + "','" + datos[6] + "','" + datos[7] + "','" + datos[8] + "','" +
  8.                     datos[9] + "','" + datos[10] + "','" + datos[11] + "','" + datos[12] + "','" + datos[13] + "','" + datos[14] + "','" +
  9.                     datos[15] + "','" + datos[16] + "','" + datos[17] + "','" + datos[18] + "','" + datos[19] + "','" + datos[20] + "','" +
  10.                     datos[21] + "','" + datos[22] + "','" + datos[23] + "','" + datos[24] + "','" + datos[25] + "','" + datos[26] + "','" +
  11.                     datos[27] + "','" + datos[28] + "'," + datos[29] + "','" + datos[30] + "','" + datos[31] + "','" + datos[32] + "')";
  12.  
  13.            SqlConnection conexion = null;
  14.  
  15.            try
  16.            {
  17.                conexion = new SqlConnection(cadena_conexion);
  18.                conexion.Open();
  19.                SqlCommand comando = new SqlCommand(sentenciaSQL, conexion);
  20.                if (1 != comando.ExecuteNonQuery())
  21.                {
  22.                    MessageBox.Show("Se ha producido un error al acceder a la fuente de datos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  23.                    exito = false;
  24.                }
  25.                else
  26.                {
  27.                    exito = true;
  28.                }
  29.            }
  30.            catch (Exception)
  31.            {
  32.                MessageBox.Show("Se ha producido un error al acceder a la fuente de datos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  33.                exito = false;
  34.            }
  35.            finally
  36.            {
  37.                if (conexion != null)
  38.                {
  39.                    if (conexion.State == ConnectionState.Open)
  40.                    {
  41.                        conexion.Close();
  42.                    }
  43.                }
  44.            }
  45.            return exito;
  46.        }

Y el error que me da es en el catch(Exception). Al pasar el depurador en la variable conexion me sale en rojo lo siguiente: {System.Data.SqlClient.SqlConnection}

Alguna solución???


Título: Re: Problema al acceder a la base de datos: SQLserver y c#
Publicado por: [D4N93R] en 10 Junio 2010, 19:55 pm
Podrías dar más detalles sobre el exception?

Al ser {System.Data.SqlClient.SqlConnection} significa que tiene que ver con sqlserver, posiblemente la consulta..

Oye, no es mejor que la crees usando un ciclo y concatenando los items del array?

Pros:
  - Buen uso del trycatch, no todos lo hacen bien.

Contra:
  - Antes de ejecutar la consulta comprueba que se haya abierto la conexión satisfactoriamente.
  - No atajes Exception, hazlo SqlException.

PD: en el catch coloca así:
Código:
catch(SqlException ex)
Pones un brakepoint dentro del catch, cuando salta la exeption metete dentro de ex y busca una propiedad llamada innerException y el innerexception de esta y asi hasta que llegues a la última en donde te dirá exactamente el error que te está dando.

Saludos


Título: Re: Problema al acceder a la base de datos: SQLserver y c#
Publicado por: Hartigan en 11 Junio 2010, 02:40 am
Muchas gracias D4n93R

El problema estaba en la sentencia como dijistes que me faltaba una comilla simple. xDD

tema solucionado y gracias por los consejos.

Salu2. ;)