Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Hartigan

#141
Esque depurando el programa me sale que lee bien la imágen de la base de datos, pero al llegar al punto de convertirla da el error...

Aquí dejo una captura: http://img714.imageshack.us/img714/7483/programe.png

en ese momento de la depuración ya se han obtenido los datos y procedo a continuación a pasarlos a sus correspondientes controles como podeis ver...

Salu2.
#142
Cita de: raul338 en 14 Junio 2010, 14:27 PM
Código (csharp) [Seleccionar]

//........
byte[] img = gestor_contacto.Obtener_Imagen_Contacto(factoriaDAO);
//..........

Estas seguro de que eso es una imagen?
Ponlo en un picturebox de prueba aver si sale :P


Cita de: Hartigan en 14 Junio 2010, 12:18 PM
En cuanto a la discusión que llevais sobre almacenar imágenes o no en la bdd, no veo porqué es una mala practica el guardarlas. Veo mucho peor guardar solo la dirección. Si tu cambias la ímagen de sitio que haces??' como la recupera si ya no está en la dirección que tienes almacenada???.
La idea es que el directorio sea intocable :xD


Eso son los bytes de la imagen. Luego hago la conversión. Lo de la factoria es porque llamo a un método que accede a a la base de datos usando el patrón dao.

Gracias por las respuestas. Voy a probar por separado como dice el compañero a ver si saco algo.
#143
Nada, no hay menera, me sigue diciendo que el parámetro no es válido...
#144
43H4FH44H45H4CH49H56H45H  muchas gracias, voy a probar a ver si me funciona lo que me has dicho.

D4N93R   perdona, tienes razón que no expliqué lo que era. Es un windows form. xD gracias.

raul338   como puse arriba sigo teniendo problemas. Voy a probar lo que me ha dicho el compañero a ver si me funciona y os comento. xD


En cuanto a la discusión que llevais sobre almacenar imágenes o no en la bdd, no veo porqué es una mala practica el guardarlas. Veo mucho peor guardar solo la dirección. Si tu cambias la ímagen de sitio que haces??' como la recupera si ya no está en la dirección que tienes almacenada???.


Saludos ;) y gracias a todos.
#145
Vale ya lo he solucionado. Parece que al selecionar la imágen en el picture box algo no se guardaba bien y luego había conflicto. Ahora ya me va. En principio se me guarda en la base de datos, pero ahora me está fallando al leer de la base de datos.

D4N93R  Estoy haciendo una agenda electronica. Entonces para cada contacto se podrá seleccionar una imágen por eso de guardarla en la base de datos. Otra forma no se como hacerlo. Si dices que es mejor guardando solo la ruta pues la verdad que si me dijeras como te estaría agradecido.

En cualquier caso ahora a ver si me podeis ayudar con esto.

Para leer la imágen de la base de datos hago lo siguiente:

Código (csharp) [Seleccionar]

public override byte[] Obtener_Imagen_Contacto()
       {
           byte[] img = null;            

           String sentenciaSQL = "SELECT imagen FROM contactos WHERE apodo = 'pavolino'";

           SqlConnection conexion = null;

           try
           {
               conexion = new SqlConnection(cadena_conexion);
               SqlDataAdapter data_adapter = new SqlDataAdapter(sentenciaSQL, conexion);

               DataTable data_table = new DataTable();
               conexion.Open();
               data_adapter.Fill(data_table);

               img = new byte[0];
               img = (byte[])data_table.Rows[0][0];

               

           }
           catch (SqlException ex)
           {
               img = null;
               MessageBox.Show("No se ha podido acceder a la fuente de datos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
           }
           finally
           {
               if(conexion != null)
               {
                   if (conexion.State == ConnectionState.Open)
                   {
                       conexion.Close();
                   }
               }              
           }
           return (img);
       }



luego desde el formulario, para que me cargue la imágen hago esto:

Código (csharp) [Seleccionar]

public Interfaz_Datos_Contacto(Factoria_DAO factoria)
       {
           InitializeComponent();

           factoriaDAO = factoria;

           MemoryStream stream = null;

           Gestor_Contacto gestor_contacto = new Gestor_Contacto();
           
           byte[] img = gestor_contacto.Obtener_Imagen_Contacto(factoriaDAO);

           stream = new MemoryStream(img);
          pictureBox_FotoImagen.Image = Image.FromStream(stream);



El error me lo da en la última linea. Me dice que el parametro no es válido.

Solución??

Gracias de antemano.
#146
Bueno, lo primero, gracias por las respuestas.

He estado probando y no hay manera. Me da un error en la linea:


this.picDerecha.Image.Save(derecho, System.Drawing.Imaging.ImageFormat.Jpeg);


y el error que me da es:

Error genérico en GDI+.

Alguna solución???
#147
gracias voy a probar, pero así leyendo por encima he visto esto:


img.Save(fs, System.Drawing.Imaging.ImageFormat.Png);


Si la imágen que yo he escogido anteriormente para mi picturebox no es png que hago??.

Es decir: yo tengo un formulario donde se agregan contactos (es una agenda) entonces cada contacto tendrá un picturebox con su imágen y unas serán en png, otras en jpg, otras gif... etc... Con eso todas las imágenes las convierte a png???. o como lo tendría que hacer sino...

Salu2
#148
Hola de nuevo compañeros. Necesito guardar una imágen en la base de datos, y he mirao tutoriales pero no hay manera, porque yo intento guardarla como byte, pero no me covierte, me dice que no puedo convertir un System.Drawing.Image en byte[].

que puedo hacer?? como paso o convierto la imágen??.

gracias de antemano.
#149
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. ;)
#150
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???