Problema al acceder a la base de datos: SQLserver y c#

Iniciado por Hartigan, 10 Junio 2010, 19:31 PM

0 Miembros y 1 Visitante están viendo este tema.

Hartigan

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 (csharp) [Seleccionar]

public override bool  Nuevo_Contacto(string[] datos)
        {
            bool exito = false;

            //Sentencia Sql
            String sentenciaSQL = "insert into contactos values('" + datos[0] + "','" + datos[1] + "','" + datos[2] + "','" +
                     datos[3] + "','" + datos[4] + "','" + datos[5] + "','" + datos[6] + "','" + datos[7] + "','" + datos[8] + "','" +
                     datos[9] + "','" + datos[10] + "','" + datos[11] + "','" + datos[12] + "','" + datos[13] + "','" + datos[14] + "','" +
                     datos[15] + "','" + datos[16] + "','" + datos[17] + "','" + datos[18] + "','" + datos[19] + "','" + datos[20] + "','" +
                     datos[21] + "','" + datos[22] + "','" + datos[23] + "','" + datos[24] + "','" + datos[25] + "','" + datos[26] + "','" +
                     datos[27] + "','" + datos[28] + "'," + datos[29] + "','" + datos[30] + "','" + datos[31] + "','" + datos[32] + "')";

            SqlConnection conexion = null;

            try
            {
                conexion = new SqlConnection(cadena_conexion);
                conexion.Open();
                SqlCommand comando = new SqlCommand(sentenciaSQL, conexion);
                if (1 != comando.ExecuteNonQuery())
                {
                    MessageBox.Show("Se ha producido un error al acceder a la fuente de datos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    exito = false;
                }
                else
                {
                    exito = true;
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Se ha producido un error al acceder a la fuente de datos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                exito = false;
            }
            finally
            {
                if (conexion != null)
                {
                    if (conexion.State == ConnectionState.Open)
                    {
                        conexion.Close();
                    }
                }
            }
            return exito;
        }


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???

[D4N93R]

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í: 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

Hartigan

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. ;)