Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Hartigan en 1 Julio 2010, 16:49 pm



Título: Volvemos al tema de las imágenes en la bdd. (c#) [SOLUCIONADO]
Publicado por: Hartigan en 1 Julio 2010, 16:49 pm
EDITO:

Problema: Problema al actualizar la base de datos habiendo cambiado la imagen almacenada.

Solución: El error estaba en la sentencia sql:

yo tenía esto:
Código
  1. ... datos[34] + "',imagen = '@img' WHERE apodo = 'litos001'";
  2.  


y la solución es quitar las comillas del @img de manera que queda así:
Código
  1. ...datos[34] + "',imagen = @img WHERE apodo = 'litos001'";

Espero que ahora quede claro

Salu2.


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: Novlucker en 1 Julio 2010, 17:30 pm
Permiteme algunos comentarios respecto al código:
Dado que estas actualizando un contacto, intenta utilizar objetos, de este modo lograrás un código más legible y evitas tener esas sentencias sql con array[1], array[2], etc
Podrías utilizar procedimientos almacenados en la bbdd, por lo mismo de esas sentencias.

Sobre el error:
¿Has verificado que el contenido de img sea correcto?
¿Qué versión de .NET estas utilizando?
¿Qué tipo de imagen debería de ser?

Intenta de este modo ...
Código
  1. System.IO.MemoryStream derec = new System.IO.MemoryStream(img);
  2. pictureBox_FotoImagen.Image = Image.FromStream(derec);

Ahora no puedo probar, así que podría estar igual de mal :xD

Saludos


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: [D4N93R] en 1 Julio 2010, 17:40 pm
Todo eso ya se le ha dicho en su post anterior. Mi recomendación es que reescriba el proyecto utilizando un modelo de componentes eficiente con procedimientos almacenados.

Saludos!


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: Hartigan en 1 Julio 2010, 17:45 pm
Gracias por las respuestas y recomendaciones pero os comento mi situación., Es la primera vez que programo en c# y ando un poco perdido, ya que en la uni solo me han enseñado c... entonces no se muy bien como usar los objetos. Sí la teoría más o menos la se, o se cosas de lo que he leido por ahí, de curso de c# que tiene guille, pero en la practica real ando un poco pez. si me ayudais un ppoco con algun ejemplo o me aclarais un poco más empezaría de nuevo gustosamente porque se que así no está del todo bien.

Salu2 y gracias.


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: [D4N93R] en 1 Julio 2010, 17:56 pm
En la wiki hay varios temas buenos sobre .Net que deberías leer.
http://wiki.elhacker.net/programacion (http://wiki.elhacker.net/programacion)

Con respecto a la programación orientada a objetos
http://www.codersource.net/microsoft-net/c-basics-tutorials/oop-c-net.aspx (http://www.codersource.net/microsoft-net/c-basics-tutorials/oop-c-net.aspx)



Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: Hartigan en 1 Julio 2010, 18:03 pm
En la wiki hay varios temas buenos sobre .Net que deberías leer.
http://wiki.elhacker.net/programacion (http://wiki.elhacker.net/programacion)

Con respecto a la programación orientada a objetos
http://www.codersource.net/microsoft-net/c-basics-tutorials/oop-c-net.aspx (http://www.codersource.net/microsoft-net/c-basics-tutorials/oop-c-net.aspx)



gracias por los enlaces. xD

osea con lo de los objetos, yo craría un objeto que contendría las variables y en la sentencia sql solo tendría que pasarle el objeto?? o como?

y sobre mi problema. nevolucker, he probado lo que me has dicho y me sigue pasando lo mismo.


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: [D4N93R] en 1 Julio 2010, 18:46 pm
Exacto! Normalmente creas una clase por cada tabla, dependiendo del modelo que estés haciendo. Ahora, en este caso tienes una tabla llamada contactos (Yo personalmente pongo los nombres de las tablas en singular, pero bueno cada quien con sus gustos) y bueno tienes que crear una clase Contacto (Obligatoriamente en singular, plurales son para las listas, colecciones, arrays, etc)

Entonces esa clase tiene una propiedad por cada campo en la base de datos. Y además tienes que tener un método save, o algo por el estilo que encapsule la forma de guardar los datos en la base de datos. Además obviamente tienes que tener tu clase de acceso a datos..

Saludos


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: Novlucker en 1 Julio 2010, 19:06 pm
Citar
Sobre el error:
¿Has verificado que el contenido de img sea correcto?
¿Qué versión de .NET estas utilizando?
¿Qué tipo de imagen debería de ser?
:rolleyes:

Saludos


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: Hartigan en 2 Julio 2010, 01:38 am
Exacto! Normalmente creas una clase por cada tabla, dependiendo del modelo que estés haciendo. Ahora, en este caso tienes una tabla llamada contactos (Yo personalmente pongo los nombres de las tablas en singular, pero bueno cada quien con sus gustos) y bueno tienes que crear una clase Contacto (Obligatoriamente en singular, plurales son para las listas, colecciones, arrays, etc)

Entonces esa clase tiene una propiedad por cada campo en la base de datos. Y además tienes que tener un método save, o algo por el estilo que encapsule la forma de guardar los datos en la base de datos. Además obviamente tienes que tener tu clase de acceso a datos..

Saludos

si si sis, mira, yo lo que tengo es lo siguiente: una clase, gestor_contacto, para gestionar los contactos, una clase contacto donde se realizan las operaciones principales set y get, y luego un par de clases para acceder ala fuente de datos siguiendo el esquema del patrón dao, más bien la factoria dao... Entonces lo que me faltaría sería el usar los objetos que no se bien del todo como hacerlo. xDD (me dan ganas de pasarte mi proyecto para que le heches un ojo y veas de lo que te hablo)

Citar
Sobre el error:
¿Has verificado que el contenido de img sea correcto?
¿Qué versión de .NET estas utilizando?
¿Qué tipo de imagen debería de ser?
:rolleyes:

Saludos


Perdón por no haber contestado a las preguntas, se me pasaron.

Desde la base de datos la imágen parece que se paa bien. estoy usando visual studio 2008 y el framwork 3.5 con sus actualizaciones.

la imagen es un jpg normal y corriente, que antes hago una conversión para poder almacenarlo en la base de datos tal cual me dijeron aquí: http://foro.elhacker.net/net/guardar_imagen_en_base_de_datos_c-t296587.45.html

Entonces la primera vez que lo hago, se me guarda bien y la leo bien, pero la segunda vez yo creo que no la guardo bien, o que no la actualiza bien con esa sentencia sql, que aunque no me da error y parece que algo guarda pero no lo hace bien.... no lo se...

saludos y gracias ;)


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: Hartigan en 2 Julio 2010, 10:34 am
Vale chicos, el problema es ni más ni menos la sentencia sql que hago para actualziar los datos, lo que estoy haciendo es guardar una cadena convertida a byte... osea la cadena '@img' por eso al leer me da un byte[4] en lugar de un byte[3256] que es lo que debería de guardar... a ver si alguien me puede ayudar a hacer esa sentencia en condiciones, mientras aprendo a usar los objetos.. xD

salu2 ;)


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: Hartigan en 2 Julio 2010, 13:40 pm
YEAAHHH!!!, ya está solucionado. El tema era la sentencia como había dicho. quitando las comas al @img se ha solucionado y funciona perfectamente. xDD

Un saludo y gracias ;)


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: [D4N93R] en 2 Julio 2010, 15:05 pm
Que bueno que lo solucionaste, si era algo importante te recomiendo que escribas aquí al solución.. Otra recomendación es que en los nombres de las clases no uses _ (guión abajo, subguión, piso, o lo que sea) entre los nombres, en donde debería haber un espacio. Por ejemplo

La clase Gestor Cliente, no la pongas Gestor_Cliente, sino GestorCliente, también te recomiendo que todo el código lo hagas en inglés ya que de esa manera si otra persona se va a involucrar en tu sistema puedan hacerlo fácilmente si son extranjeros, por ejemplo. En donde la clase sería CustomerManager o algo por el estilo.

Un saludo.


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: 43H4FH44H45H4CH49H56H45H en 2 Julio 2010, 15:15 pm
Que bueno que lo solucionaste, si era algo importante te recomiendo que escribas aquí al solución

quitando las comas al @img se ha solucionado y funciona perfectamente. xDD


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: [D4N93R] en 2 Julio 2010, 15:41 pm
Que bueno que lo solucionaste, si era algo importante te recomiendo que escribas aquí al solución

quitando las comas al @img se ha solucionado y funciona perfectamente. xDD

Sería mejor que los pusiera arreglado no? el código para que un usuario no tenga que ver tooooodo el post solo para eso..


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: 43H4FH44H45H4CH49H56H45H en 2 Julio 2010, 16:18 pm
En este caso basta con editar el 1er mensaje (y el tema), comentar con
Código
  1. //
la linea de code con el error y debajo escribir la linea con el code correcto, aclarando con un comentario.
Evitamos leer 2 codes para ver el error de 1 sola linea  :P


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: [D4N93R] en 2 Julio 2010, 16:50 pm
Bueno, lo que sea, igual yo no lo puedo hacer xD


Título: Re: Volvemos al tema de las imágenes en la bdd. (c#)
Publicado por: Hartigan en 2 Julio 2010, 17:13 pm
VAle pues edito para que quede más claro.


Salu2 y gracias de nuevo chicos. ;)