elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Guardar Imagen en base de datos. (c#)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 [4] 5 6 7 8 Ir Abajo Respuesta Imprimir
Autor Tema: Guardar Imagen en base de datos. (c#)  (Leído 69,475 veces)
43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: Guardar Imagen en base de datos. (c#)
« Respuesta #30 en: 15 Junio 2010, 15:58 pm »

Bueno no hay manera. He seguido tropecientos tutoriales y esque hay algo que no va bien. En la parte en la que se hace la conversión de bytes al tipo image, toma el valor null, no se porqué y entonces no le asigna nada... Creo que voy a desistir y a probar el método de almacenar solo la dirección local de la imágen.

Puedes leer que almaceno en la BD sin asignar la imagen al picturebox.
Si leemos algunos bytes antes de almacenarlos:

Código
  1. System.IO.Stream derecho = new System.IO.MemoryStream();
  2. this.pictureBox1.Image.Save(derecho, System.Drawing.Imaging.ImageFormat.Jpeg);
  3. byte[] imgDerecha = new byte[derecho.Length];
  4. derecho.Position = 0;
  5. derecho.Read(imgDerecha, 0, System.Convert.ToInt32(derecho.Length));
  6. derecho.Close();
  7. this.textBox1.Text = imgDerecha[0].ToString() + " " + imgDerecha[1].ToString();

y luego con la BD antes de asignar la imagen leemos los mismos bytes para saber si se almaceno correctamente asi podemos comparar con los bytes originales.
Puedes hacerlo con el primero y el ultimo o hacer un foreach para saber donde existe alguna diferencia.
Me parece que no estas guardando correctamente los bytes en la BD.
Pero tienes que hacer las pruebas para estar seguro en que parte tienes el problema.


En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
Hartigan


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: Guardar Imagen en base de datos. (c#)
« Respuesta #31 en: 15 Junio 2010, 16:39 pm »

Bueno no hay manera. He seguido tropecientos tutoriales y esque hay algo que no va bien. En la parte en la que se hace la conversión de bytes al tipo image, toma el valor null, no se porqué y entonces no le asigna nada... Creo que voy a desistir y a probar el método de almacenar solo la dirección local de la imágen.

Puedes leer que almaceno en la BD sin asignar la imagen al picturebox.
Si leemos algunos bytes antes de almacenarlos:

Código
  1. System.IO.Stream derecho = new System.IO.MemoryStream();
  2. this.pictureBox1.Image.Save(derecho, System.Drawing.Imaging.ImageFormat.Jpeg);
  3. byte[] imgDerecha = new byte[derecho.Length];
  4. derecho.Position = 0;
  5. derecho.Read(imgDerecha, 0, System.Convert.ToInt32(derecho.Length));
  6. derecho.Close();
  7. this.textBox1.Text = imgDerecha[0].ToString() + " " + imgDerecha[1].ToString();

y luego con la BD antes de asignar la imagen leemos los mismos bytes para saber si se almaceno correctamente asi podemos comparar con los bytes originales.
Puedes hacerlo con el primero y el ultimo o hacer un foreach para saber donde existe alguna diferencia.
Me parece que no estas guardando correctamente los bytes en la BD.
Pero tienes que hacer las pruebas para estar seguro en que parte tienes el problema.

Tiene que ser eso, que se guardan mal los datos, porque incluso con el programa de D4N93R me sale el mismo error en el listview (parámetro no válido).

Voy a probar a ver. Muchas gracias.


En línea

Hartigan


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: Guardar Imagen en base de datos. (c#)
« Respuesta #32 en: 15 Junio 2010, 17:28 pm »

Bueno pues efectivamente ahí está el problema.

Os publico como hago para guardar y para leer de la base de datos a ver si veis el error

Guardar:

Código
  1. private void button_AceptarNC_Click(object sender, EventArgs e)
  2.        {
  3.            bool exito = false;
  4.            //Primero copiamos las strings
  5.            string[] datos = new string[33];
  6.            int imgLength = 0;
  7.  
  8.            /*string temp = Path.GetTempFileName();
  9.             FileStream fs = new FileStream(temp, FileMode.OpenOrCreate, FileAccess.ReadWrite);*/
  10.  
  11.            System.IO.Stream derecho = new System.IO.MemoryStream();
  12.            this.pictureBox_FotoImagen.Image.Save(derecho, System.Drawing.Imaging.ImageFormat.Jpeg);
  13.            byte[] img = new byte[derecho.Length];
  14.            derecho.Position = 0;
  15.            derecho.Read(img, 0, System.Convert.ToInt32(derecho.Length));
  16.            derecho.Close();
  17.            this.textBox1.Text = img[0].ToString() + " " + img[1].ToString() + " " + img[2].ToString() + " " + img[3].ToString();
  18.  
  19.  
  20.  
  21.            //System.IO.Stream stream = new System.IO.MemoryStream();
  22.  
  23.            datos[0] = this.textBox_Titulo.Text;
  24.            datos[1] = this.textBox_Nombre.Text;
  25.            datos[2] = this.textBox_SegundoNombre.Text;
  26.            datos[3] = this.textBox_PrimerApellido.Text;
  27.            datos[4] = this.textBox_SegundoApellido.Text;
  28.            datos[5] = this.textBox_Sobrenombre.Text;
  29.            datos[6] = this.textBox_Direccion.Text;
  30.            datos[7] = this.textBox_Ciudad.Text;
  31.            datos[8] = this.textBox_Provincia.Text;
  32.            datos[9] = this.textBox_CodigoPostal.Text;
  33.            datos[10] = this.textBox_Pais.Text;
  34.            datos[11] = this.textBox_Prefijo_Telefono.Text + this.textBox_Telefono.Text;
  35.            datos[12] = this.textBox_Movil.Text;
  36.            datos[13] = this.textBox_Fax.Text;
  37.            datos[14] = this.listBox_Email.Text;
  38.            datos[15] = this.textBox_Web.Text;
  39.            datos[16] = this.textBox_Twitter.Text;
  40.            datos[17] = this.textBox_Facebook.Text;
  41.            datos[18] = this.textBox_Direccion_Trabajo.Text;
  42.            datos[19] = this.textBox_Ciudad_Trabajo.Text;
  43.            datos[20] = this.textBox_Provincia_Trabajo.Text;
  44.            datos[21] = this.textBox_CP_Trabajo.Text;
  45.            datos[22] = this.textBox_Pais_Trabajo.Text;
  46.            datos[23] = this.textBox_Organizacion_Trabajo.Text;
  47.            datos[24] = this.textBox_Puesto_Trabajo.Text;
  48.            datos[25] = this.textBox_Departamento_Trabajo.Text;
  49.            datos[26] = this.textBox_Oficina_Trabajo.Text;
  50.            datos[27] = this.textBox_Telefono_Trabajo.Text;
  51.            datos[28] = this.textBox_Fax_Trabajo.Text;
  52.            datos[29] = this.comboBox_Sexo.Text;
  53.            datos[30] = this.textBox_Pareja.Text;
  54.            datos[31] = this.listBox_Hijos.Text;
  55.            datos[32] = this.richTextBox_Comentario.Text;
  56.  
  57.  
  58.            /*this.pictureBox_FotoImagen.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
  59.             fs.Position = 0;
  60.  
  61.             imgLength = Convert.ToInt32(fs.Length);
  62.             byte[] img = new byte[imgLength];
  63.             fs.Read(img, 0, imgLength);
  64.             fs.Close();*/
  65.  
  66.            String sentenciaSQL = "insert into contactos values('" + datos[0] + "','" + datos[1] + "','" + datos[2] + "','" +
  67.                     datos[3] + "','" + datos[4] + "','" + datos[5] + "','" + datos[6] + "','" + datos[7] + "','" + datos[8] + "','" +
  68.                     datos[9] + "','" + datos[10] + "','" + datos[11] + "','" + datos[12] + "','" + datos[13] + "','" + datos[14] + "','" +
  69.                     datos[15] + "','" + datos[16] + "','" + datos[17] + "','" + datos[18] + "','" + datos[19] + "','" + datos[20] + "','" +
  70.                     datos[21] + "','" + datos[22] + "','" + datos[23] + "','" + datos[24] + "','" + datos[25] + "','" + datos[26] + "','" +
  71.                     datos[27] + "','" + datos[28] + "','" + datos[29] + "','" + datos[30] + "','" + datos[31] + "','" + datos[32] + "','" + img + "')";
  72.  
  73.            SqlConnection conexion = null;
  74.  
  75.            try
  76.            {
  77.                conexion = new SqlConnection(cadena_conexion);
  78.                conexion.Open();
  79.  
  80.                SqlCommand cmd = new SqlCommand(sentenciaSQL, conexion);
  81.  
  82.                if ((1 != cmd.ExecuteNonQuery()))
  83.                {
  84.                    MessageBox.Show("Se ha producido un error al acceder a la fuente de datos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  85.                    exito = false;
  86.                }
  87.                else
  88.                {
  89.                    exito = true;
  90.                }
  91.  
  92.            }
  93.            catch (SqlException ex)
  94.            {
  95.                // MessageBox.Show(ex.InnerException.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  96.                MessageBox.Show(" ha producido un error al acceder a la fuente de datos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  97.                exito = false;
  98.            }
  99.            finally
  100.            {
  101.                if (conexion != null)
  102.                {
  103.                    if (conexion.State == ConnectionState.Open)
  104.                    {
  105.                        conexion.Close();
  106.                    }
  107.                }
  108.            }
  109. if (exito)
  110.            {
  111.                MessageBox.Show("Contacto añadido con exito", "Éxito", MessageBoxButtons.OK, MessageBoxIcon.Information);
  112.                this.Close();
  113.            }
  114.            else
  115.            {
  116.                MessageBox.Show("No se ha podido añadir el contacto", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  117.                this.Close();
  118.            }
  119.  
  120.  
  121.  
  122.  
  123.  
  124.        }
  125.  

Ahora como leo:

Código
  1. public Interfaz_Datos_Contacto()
  2.        {
  3.            InitializeComponent();
  4.  
  5.  
  6.            string cadena_conexion = @"Server= (local)\SQLEXPRESS; DataBase = agenda; Integrated Security = yes;";
  7.  
  8.            byte[] img = new byte[0];
  9.            string[] datos = new string[33];
  10.  
  11.  
  12.  
  13.            String sentenciaSQL = "SELECT * FROM contactos WHERE apodo = 'pavolino'";
  14.  
  15.            SqlConnection conexion = null;
  16.  
  17.            try
  18.            {
  19.                conexion = new SqlConnection(cadena_conexion);
  20.                SqlDataAdapter data_adapter = new SqlDataAdapter(sentenciaSQL, conexion);
  21.  
  22.                DataTable data_table = new DataTable();
  23.  
  24.                conexion.Open();
  25.                data_adapter.Fill(data_table);
  26.  
  27.                datos = new string[33];
  28.                datos[0] = data_table.Rows[0][0].ToString();
  29.                datos[1] = data_table.Rows[0][1].ToString();
  30.                datos[2] = data_table.Rows[0][2].ToString();
  31.                datos[3] = data_table.Rows[0][3].ToString();
  32.                datos[4] = data_table.Rows[0][4].ToString();
  33.                datos[5] = data_table.Rows[0][5].ToString();
  34.                datos[6] = data_table.Rows[0][6].ToString();
  35.                datos[7] = data_table.Rows[0][7].ToString();
  36.                datos[8] = data_table.Rows[0][8].ToString();
  37.                datos[9] = data_table.Rows[0][9].ToString();
  38.                datos[10] = data_table.Rows[0][10].ToString();
  39.                datos[11] = data_table.Rows[0][11].ToString();
  40.                datos[12] = data_table.Rows[0][12].ToString();
  41.                datos[13] = data_table.Rows[0][13].ToString();
  42.                datos[14] = data_table.Rows[0][14].ToString();
  43.                datos[15] = data_table.Rows[0][15].ToString();
  44.                datos[16] = data_table.Rows[0][16].ToString();
  45.                datos[17] = data_table.Rows[0][17].ToString();
  46.                datos[18] = data_table.Rows[0][18].ToString();
  47.                datos[19] = data_table.Rows[0][19].ToString();
  48.                datos[20] = data_table.Rows[0][20].ToString();
  49.                datos[21] = data_table.Rows[0][21].ToString();
  50.                datos[22] = data_table.Rows[0][22].ToString();
  51.                datos[23] = data_table.Rows[0][23].ToString();
  52.                datos[24] = data_table.Rows[0][24].ToString();
  53.                datos[25] = data_table.Rows[0][25].ToString();
  54.                datos[26] = data_table.Rows[0][26].ToString();
  55.                datos[27] = data_table.Rows[0][27].ToString();
  56.                datos[28] = data_table.Rows[0][28].ToString();
  57.                datos[29] = data_table.Rows[0][29].ToString();
  58.                datos[30] = data_table.Rows[0][30].ToString();
  59.                datos[31] = data_table.Rows[0][31].ToString();
  60.                datos[32] = data_table.Rows[0][32].ToString();
  61.  
  62.  
  63.  
  64.  
  65.  
  66.                foreach (DataRow myRow in data_table.Rows)
  67.                {
  68.                    img = (byte[])myRow["imagen"];
  69.                    this.textBox1.Text = img[0].ToString() + " " + img[1].ToString() + " " + img[2].ToString() + " " + img[3].ToString();
  70.  
  71.                }
  72.  
  73.            }
  74.            catch (SqlException ex)
  75.            {
  76.                datos = null;
  77.                MessageBox.Show("No se ha podido acceder a la fuente de datos", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  78.            }
  79.            finally
  80.            {
  81.                if (conexion != null)
  82.                {
  83.                    if (conexion.State == ConnectionState.Open)
  84.                    {
  85.                        conexion.Close();              
  86.  
  87.                    }
  88.                }
  89.            }
  90. if ((datos != null) && ( img != null))
  91.            {
  92.                label_Nombre_Completo.Text = datos[1] + "" + datos[2] + "" + datos[3] + "" + datos[4];
  93.                label_Titulo.Text = datos[0];
  94.                label_Nombre.Text = datos[1];
  95.                label_SegundoNombre.Text = datos[2];
  96.                label_PrimerApellido.Text = datos[3];
  97.                label_SegundoApellido.Text = datos[4];
  98.                label_Sobrenombre.Text = datos[5];
  99.                label_Direccion.Text = datos[6];
  100.                label_Ciudad.Text = datos[7];
  101.                label_EstadoProvincia.Text = datos[8];
  102.                label_CodigoPostal.Text = datos[9];
  103.                label_PaisRegion.Text = datos[10];
  104.                label_Telefono.Text = datos[11];
  105.                label_Movil.Text = datos[12];
  106.                label_Fax.Text = datos[13];
  107.                label_EMail.Text = datos[14];
  108.                label_Web.Text = datos[15];
  109.                label_Twitter.Text = datos[16];
  110.                label_Facebook.Text = datos[17];
  111.                label_Direccion_Trabajo.Text = datos[18];
  112.                label_Ciudad_Trabajo.Text = datos[19];
  113.                label_Provincia_Trabajo.Text = datos[20];
  114.                label_CP_Trabajo.Text = datos[21];
  115.                label_Pais_Trabajo.Text = datos[22];
  116.                label_Organizacion_Trabajo.Text = datos[23];
  117.                label_Puesto_Trabajo.Text = datos[24];
  118.                label_Departamento_Trabajo.Text = datos[25];
  119.                label_Oficina_Trabajo.Text = datos[26];
  120.                label_Telefono_Trabajo.Text = datos[27];
  121.                label_Fax_Trabajo.Text = datos[28];
  122.                label_Sexo.Text = datos[29];
  123.                label_Pareja.Text = datos[30];
  124.                label_Hijos.Text = datos[31];
  125.                richTextBox_Comentarios.Text = datos[32];
  126.  
  127.  
  128.  
  129.                MemoryStream stream = new MemoryStream(img);
  130.                stream.Write(img, 0, img.Length);
  131.                stream = new MemoryStream(img);
  132.                this.pictureBox_FotoImagen.Image = Image.FromStream(stream);      
  133.  
  134.  
  135.  
  136.           }
  137.            else
  138.            {
  139.                MessageBox.Show("Se ha producido un error al obtener los datos del contacto", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  140.            }
  141.  
  142.  
  143.  
  144.        }

He dejado el código donde compruebo los bytes y es ceirto que salen completamente distintos.

Salu2.

EDITO: la tabla de los contactos en la base de datos la tengo así:

Código
  1. CREATE TABLE contactos(
  2. titulo VARCHAR(50),
  3. nombre VARCHAR(50) NOT NULL,
  4. nombre2 VARCHAR(50),
  5. ape1 VARCHAR(50) NOT NULL,
  6. ape2 VARCHAR(50),
  7. apodo VARCHAR(50) NOT NULL,
  8. direccion VARCHAR(150),
  9. ciudad VARCHAR(20),
  10. provincia VARCHAR(20),
  11. cp VARCHAR(10),
  12. pais VARCHAR(20),
  13. telefono VARCHAR(20),
  14. movil VARCHAR(20),
  15. fax VARCHAR(20),
  16. email VARCHAR(50),
  17. web VARCHAR(50),
  18. twitter VARCHAR(50),
  19. facebook VARCHAR(50),
  20. direccion2 VARCHAR(150),
  21. ciudad2 VARCHAR(20),
  22. provincia2 VARCHAR(20),
  23. cp2 VARCHAR(10),
  24. pais2 VARCHAR(20),
  25. organizacion VARCHAR(50),
  26. puesto VARCHAR(50),
  27. departamento VARCHAR(50),
  28. oficina VARCHAR(50),
  29. telefono2 VARCHAR(20),
  30. fax2 VARCHAR(20),
  31. sexo VARCHAR(10),
  32. pareja VARCHAR(50),
  33. hijos VARCHAR(100),
  34. comentario VARCHAR(500),
  35. imagen image,
  36.  
  37. );
« Última modificación: 15 Junio 2010, 17:36 pm por Hartigan » En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Guardar Imagen en base de datos. (c#)
« Respuesta #33 en: 15 Junio 2010, 17:35 pm »

Obviamente mi código era de referencia, y el listview lo cree para listar las imágenes.

Pero bueno ya solucionaste no?

EDIT:

Ahora que veo tu código tienes varios problemas que, creo, deberías echarle un ojo:

1.- Considera usar una struct o clase, para almacenar la data en vez de un arreglo
2.- Qué pasa si la imagen no es jpeg?
3.- Si la aplicación final va a usar SqlServerExpress no pongas las fotos en la BD porque la versión express tiene un límite de almacenamiento.
4.- Considera usar una clase de acceso a datos en vez de hacerlo todo en un método.
5.- En:
Código:
String sentenciaSQL = "SELECT * FROM contactos WHERE apodo = 'pavolino'";
Seleccionas * , por lo que la consulta se hace más lenta, considera seleccionar las columnas que necesitas, así sean todas. Además de que nada asegura de que estas usando la imagen correcta al momento de cargar la data ya que estas usando un foreach en vez de validar si hay registros en el datatable y luego usar el primero.
6.- Con respecto a la base de datos, siempre utiliza un primarykey decimal, autoincremental, es decir, identity, con eso creas una identidad para el sistema.

Un saludo!
« Última modificación: 15 Junio 2010, 17:45 pm por D4N93R » En línea

Hartigan


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: Guardar Imagen en base de datos. (c#)
« Respuesta #34 en: 15 Junio 2010, 17:39 pm »

Obviamente mi código era de referencia, y el listview lo cree para listar las imágenes.

Pero bueno ya solucionaste no?

ya me imaigno. Que va tio, me sigue pasando lo mismo. El problema es como dice el compañero 43H4FH44H45H4CH49H56H45H  que los datos que guardo y los que recojo son completamente distintos. Al guardar los bytes son: 255 216 255 224....... y al leer de la base de datos, la variable img tiene los siguientes bytes: 83 121 115 116...... como puedes ver no se parecen en nada. Entonces debe ser o que guardo mal, o que recojo mal, pero esque he seguido vuestros códigos y debería estar bien, no veo el fallo por ningun lado... A ver si me podeis ayudar.

Saludos y perdonar todas las molestias que estoy causando.

Gracias.
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Guardar Imagen en base de datos. (c#)
« Respuesta #35 en: 15 Junio 2010, 18:04 pm »

Hartigan, edite mi post anterior. :)
En línea

43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: Guardar Imagen en base de datos. (c#)
« Respuesta #36 en: 15 Junio 2010, 18:14 pm »

@Hartigan en el insert solo inserta la imagen y un string para la consulta, luego prueba nuevamente que valores guarda.

Código
  1. INSERT INTO <nombre_tabla>
  2. [(<campo1>[,<campo2>,...])]
  3. VALUES
  4. (<valor1>,<valor2>,...);

debes especificar el campo y el valor para hacerlo.
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
43H4FH44H45H4CH49H56H45H
Wiki

Desconectado Desconectado

Mensajes: 502



Ver Perfil
Re: Guardar Imagen en base de datos. (c#)
« Respuesta #37 en: 15 Junio 2010, 18:25 pm »

Una cosa mas, estas utilizando:

Código
  1. '" + img + "'

saca las dobles comillas.
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Guardar Imagen en base de datos. (c#)
« Respuesta #38 en: 15 Junio 2010, 18:38 pm »

Ya probé el código de escritura que usas, funciona bien, ahora, yo creo que el problema que tienes esta en la lectura, o carga de data . Específicamente akí:

Código
  1. foreach (DataRow myRow in data_table.Rows)
  2. {
  3.     img = (byte[])myRow["imagen"];
  4.     this.textBox1.Text = img[0].ToString() + " " + img[1].ToString() + " " + img[2].ToString() + " " + img[3].ToString();
  5. }

En donde estas recorriendo un datatable que supuestamente debería tener un solo registro.

Si por casualidad te vienen dos vas a mostrar la imagen que no es, o pueede que sea hasta data corrupta que tengas en un registro mientras hacías las pruebas. y por eso te da error.

Entonces, añadres un brake en el foreach, cosa que es mala práctica, o lo haces de ésta manera:

Código
  1. if(data_table.Rows.Count>0)
  2. {
  3.     DataRow myRow = data_table.Rows[0];
  4.     img = (byte[])myRow["imagen"];
  5.     this.textBox1.Text = img[0].ToString() + " " + img[1].ToString() + " " + img[2].ToString() + " " + img[3].ToString();
  6. }
En línea

Hartigan


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: Guardar Imagen en base de datos. (c#)
« Respuesta #39 en: 15 Junio 2010, 18:42 pm »

Obviamente mi código era de referencia, y el listview lo cree para listar las imágenes.

Pero bueno ya solucionaste no?

EDIT:

Ahora que veo tu código tienes varios problemas que, creo, deberías echarle un ojo:

1.- Considera usar una struct o clase, para almacenar la data en vez de un arreglo
2.- Qué pasa si la imagen no es jpeg?
3.- Si la aplicación final va a usar SqlServerExpress no pongas las fotos en la BD porque la versión express tiene un límite de almacenamiento.
4.- Considera usar una clase de acceso a datos en vez de hacerlo todo en un método.
5.- En:
Código:
String sentenciaSQL = "SELECT * FROM contactos WHERE apodo = 'pavolino'";
Seleccionas * , por lo que la consulta se hace más lenta, considera seleccionar las columnas que necesitas, así sean todas. Además de que nada asegura de que estas usando la imagen correcta al momento de cargar la data ya que estas usando un foreach en vez de validar si hay registros en el datatable y luego usar el primero.
6.- Con respecto a la base de datos, siempre utiliza un primarykey decimal, autoincremental, es decir, identity, con eso creas una identidad para el sistema.

Un saludo!


hola, gracias. te comento:

1. lo intentaré hacer así xD
2. Eso es lo que me preguntaba yo unos post más atrás.
3. Seguramente termine usando mysql, de momento ando probando con imágenes pequeñajas. xD
4. Sí, en mi código lo hago por separado, ya que utilizo un patron dao y el acceso lo hago en otra clase.
5. Pero si quiero seleccionar todos los datos??? no entiendo muy bien como se haría..
6. Sí, ahora solo estoy de pruebas, luego tendré que usar un primary key para hacer las búsquedas.


@Hartigan en el insert solo inserta la imagen y un string para la consulta, luego prueba nuevamente que valores guarda.

Código
  1. INSERT INTO <nombre_tabla>
  2. [(<campo1>[,<campo2>,...])]
  3. VALUES
  4. (<valor1>,<valor2>,...);

debes especificar el campo y el valor para hacerlo.

No entiendo muy  bien como sería.... dices que le pase la imagen y un array para los datos???...

Una cosa mas, estas utilizando:

Código
  1. '" + img + "'

saca las dobles comillas.

ok, voy a probar a ver.

Muchas gracias a los 2.
En línea

Páginas: 1 2 3 [4] 5 6 7 8 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
>Guardar base de datos
Bases de Datos
mapers 7 9,863 Último mensaje 12 Mayo 2011, 08:58 am
por mapers
Guardar imagen sin tener ruta de archivo en una base datos.
.NET (C#, VB.NET, ASP)
enterariel 2 3,607 Último mensaje 10 Agosto 2012, 22:04 pm
por enterariel
guardar campos ocultos en base de datos
Desarrollo Web
jecavi20 2 2,586 Último mensaje 6 Julio 2013, 00:05 am
por jecavi20
Guardar Datos de una encuesta en Base de Datos con SQL Server
Programación C/C++
arodrigu3zg 0 2,030 Último mensaje 20 Abril 2018, 23:06 pm
por arodrigu3zg
Guardar respuesta múltiple en base de datos
PHP
welchu 2 2,601 Último mensaje 14 Agosto 2018, 19:06 pm
por andystefano
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines