Guardar Imagen en base de datos. (c#)

Iniciado por Hartigan, 13 Junio 2010, 20:25 PM

0 Miembros y 4 Visitantes están viendo este tema.

43H4FH44H45H4CH49H56H45H

Cita de: raul338 en 16 Junio 2010, 16:00 PMLuego tu saltaste a decir una gran ovbiedad: que no se puede guardar texto sin comillas :¬¬ cuando en realidad intento guardar datos binarios.

Cita de: raul338 en 16 Junio 2010, 05:59 AM
2º Cambiaste el codigo, si guarda el string, pero lo que el intentaba hacer era guardar la imagen como si fuera texto (para colmo sin comillas)

Al parecer no entiendes ni lo que voz mismo escribes  :laugh:

Cita de: raul338 en 16 Junio 2010, 16:00 PM2º Me faltan Concepto basicos? Cuales?! :xD

Simple no sabes distinguir entre un byte y un .......
A que no te das cuenta  :xD

Y la solucion que propongo es utilizar el visual studio para que nos dee las soluciones, que es muy distinto a no saber utilizarlo y por lo mismo ni abrirlo para buscar las soluciones en internet.


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

Pues cual es tu solución, ponla acá. Porque ya yo di la mía que es usar parámetros. 

:)

43H4FH44H45H4CH49H56H45H

"me canso"  :laugh:

En la noche cuando llegue a mi casa subo un ejemplo de un proyecto que hice hace un par de años  :P

Pero lo que quiero recalcar es que el VS te da las soluciones sin necesidad de estarlas buscando.  >:D

-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

Lo primero muchas gracias a todos de nuevo..

43H4FH44H45H4CH49H56H45H , el código que me pusistes antes a ti te funciona???

esque a mi me da el siguiente error: "Referencia a objeto no establecida como instancia de un objeto."

En concreto en las lineas:

Código (csharp) [Seleccionar]

label_Sobrenombre.Text = data_table.Rows[0][0].ToString();
...
pictureBox_FotoImagen.Image = Image.FromStream(derec);


De todos modos inspeccionando la imágen parece que sí la toma bien, asíque solo me faltaría resolver eso... y luego ya estaría todo.

Salu2.

43H4FH44H45H4CH49H56H45H

lo probe al hacerlo, funciona bien, fijate en las tablas del sql server que datos almaceno, hazlo con el SQL server manage... que esta en la imagen que puse. Si no lo tienes descargalo y compara.

Pega una img de las tablas y el code entero para ver.

-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

raul338

Cita de: 43H4FH44H45H4CH49H56H45H en 16 Junio 2010, 17:47 PM
Cita de: raul338 en 16 Junio 2010, 16:00 PMLuego tu saltaste a decir una gran ovbiedad: que no se puede guardar texto sin comillas :¬¬ cuando en realidad intento guardar datos binarios.

Cita de: raul338 en 16 Junio 2010, 05:59 AM
2º Cambiaste el codigo, si guarda el string, pero lo que el intentaba hacer era guardar la imagen como si fuera texto (para colmo sin comillas)

Al parecer no entiendes ni lo que voz mismo escribes  :laugh:

Cita de: raul338 en 16 Junio 2010, 16:00 PM2º Me faltan Concepto basicos? Cuales?! :xD

Simple no sabes distinguir entre un byte y un .......
A que no te das cuenta  :xD

Y la solucion que propongo es utilizar el visual studio para que nos dee las soluciones, que es muy distinto a no saber utilizarlo y por lo mismo ni abrirlo para buscar las soluciones en internet.

El visual studio no es la solucion, solo nos da herramientas :P

no entiendo tu punto del byte.

Y no entendiste mi punto, yo queria guardar como texto PURO los mismisimos bytes, No con conmillas.... sino no hubieras hecho todo este lio :P


Cita de: 43H4FH44H45H4CH49H56H45H en 16 Junio 2010, 19:22 PM
"me canso"  :laugh:
En la noche cuando llegue a mi casa subo un ejemplo de un proyecto que hice hace un par de años  :P
Pero lo que quiero recalcar es que el VS te da las soluciones sin necesidad de estarlas buscando.  >:D
Bueno, habra que ver ese proyecto :) lo estare esperando

pero.... quien dice lo contrario? solo que yo no busco en internet ni abro el visual studio para confirmar cosas que ya he confirmado antes :P
Si alguien pregunta sobre como se declara un integer, tu no vas y te fijas en el vs "int miEntero = 0;" o si? bueno en esto es lo mismo :P

[D4N93R]

Cita de: raul338 en 16 Junio 2010, 22:29 PM
Si alguien pregunta sobre como se declara un integer, tu no vas y te fijas en el vs "int miEntero = 0;" o si? bueno en esto es lo mismo :P

Yo si, y veo que no se me olvide el ;  :¬¬

;-) ;-)

Hartigan

YEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


YEEEEEEEEEEEAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHH!!!!

Por fin!!!!, lo he conseguido. El úlgimo error que me daba era por una tontería, que había quitado el InitialiceComponent(); xDDD


Muchas gracias chicos, de verdad, muchisimas gracias!!!!!, sin vosotros no lo habría conseguido. Sois los mejores!!!!!!!!!!!!!!!!!!!!!!!!!


Al final he utilizado el código que me ha puesto: 43H4FH44H45H4CH49H56H45H y me ha funcionado perfectamente. El fallo estaba en que no se guardaba bien la imagen y por tanto no la leia bien. Asíque na. Tema solucionado.

Gracias de nuevo y un abrazo ;)

43H4FH44H45H4CH49H56H45H

@Hartigan  ;-)

Cita de: raul338 en 16 Junio 2010, 22:29 PMBueno, habra que ver ese proyecto :) lo estare esperando

Que proyecto?  >:(  escribi que subiria un ejemplo de un proyecto que hice ...
Mas clarito, sacaria un ejemplo de ese proyecto para mostrarlo  :P


Saque muchas cosas que no iban al caso para lo que muestro:

Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Sql_Imagenes
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=bdprueba;Integrated Security=SSPI");
            SqlDataAdapter dta = new SqlDataAdapter("Select Id,nombre,imagen From tprueba", con);
            SqlCommandBuilder mycb = new SqlCommandBuilder(dta);
            DataSet dts = new DataSet("tprueba");
            dta.InsertCommand = mycb.GetInsertCommand();
            dta.MissingSchemaAction = MissingSchemaAction.AddWithKey;

            System.IO.Stream strImg = new System.IO.MemoryStream();
            this.pictureBox1.Image.Save(strImg, System.Drawing.Imaging.ImageFormat.Jpeg);
            byte[] bImagen = new byte[strImg.Length];
            strImg.Position = 0;
            strImg.Read(bImagen, 0, System.Convert.ToInt32(strImg.Length));
            strImg.Close();
            dta.Fill(dts, "tprueba");

            DataRow myRow;
            myRow = dts.Tables["tprueba"].NewRow();
            myRow["nombre"] = textBox1.Text.Trim();
            myRow["imagen"] = bImagen;
            dts.Tables["tprueba"].Rows.Add(myRow);
            dta.Update(dts, "tprueba");
            con.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=bdprueba;Integrated Security=SSPI");
            SqlDataAdapter dta = new SqlDataAdapter("Select Id,nombre,imagen From tprueba WHERE nombre ='" + textBox1.Text + "'", con);
            SqlCommandBuilder mycb = new SqlCommandBuilder(dta);
            DataSet dts = new DataSet("tprueba");

            dta.MissingSchemaAction = MissingSchemaAction.AddWithKey;

            dta.Fill(dts, "tprueba");
            DataRow myRow;
            try
            {
                myRow = dts.Tables["tprueba"].Rows[0];
                byte[] MyData = new byte[0];
                MyData = (byte[])myRow["imagen"];
                int ArraySize = new int();
                ArraySize = MyData.GetUpperBound(0);
                System.IO.Stream derec = new System.IO.MemoryStream();
                derec.Write(MyData, 0, MyData.Length);
                textBox1.Text = myRow["nombre"].ToString();
                pictureBox1.Image = Image.FromStream(derec);
            }
            catch (Exception er)
            {
                MessageBox.Show(er.Message);
            }
            con.Close();

        }
    }
}


Yo lo use de este modo porque me parecia mas legible y otras cosas mas que ya no recuerdo.

La BD:



Cita de: raul338 en 16 Junio 2010, 22:29 PMno entiendo tu punto del byte

Al quitar las comillas simples intentaba guardar un System.Byte[] como si fuera un byte y no como si fuera un texto (lo cual el VS y bla bla bla), mejor prueba lo que te digo...

Cita de: raul338 en 16 Junio 2010, 22:29 PMyo queria guardar como texto PURO los mismisimos bytes No con conmillas....

Cita de: raul338 en 16 Junio 2010, 22:29 PMLuego tu saltaste a decir una gran ovbiedad: que no se puede guardar texto sin comillas

Je je, ya no te entiendo, mejor pon en orden tus ideas.

Si se me fue alguna variable demas o quien sabe favor avisar, la culpa es de @raul338 me hace cansar la vista con sus comentarios  :xD


-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

raul338

Cita de: 43H4FH44H45H4CH49H56H45H en 17 Junio 2010, 06:05 AM
@Hartigan  ;-)

Cita de: raul338 en 16 Junio 2010, 22:29 PMBueno, habra que ver ese proyecto :) lo estare esperando

Que proyecto?  >:(  escribi que subiria un ejemplo de un proyecto que hice ...
Mas clarito, sacaria un ejemplo de ese proyecto para mostrarlo  :P
Es lo mismo :xD

Cita de: 43H4FH44H45H4CH49H56H45H en 17 Junio 2010, 06:05 AM
Cita de: raul338 en 16 Junio 2010, 22:29 PMno entiendo tu punto del byte

Al quitar las comillas simples intentaba guardar un System.Byte[] como si fuera un byte y no como si fuera un texto (lo cual el VS y bla bla bla), mejor prueba lo que te digo...

Cita de: raul338 en 16 Junio 2010, 22:29 PMyo queria guardar como texto PURO los mismisimos bytes No con conmillas....

Cita de: raul338 en 16 Junio 2010, 22:29 PMLuego tu saltaste a decir una gran ovbiedad: que no se puede guardar texto sin comillas

Je je, ya no te entiendo, mejor pon en orden tus ideas.
Mientras yo me entienda y lo haga asi, esta todo bien :P
Nunca me llegaste a entender, y no te lo voy a demostrar como si fuera suma de piedritas :xD

Cita de: 43H4FH44H45H4CH49H56H45H en 17 Junio 2010, 06:05 AM
Si se me fue alguna variable demas o quien sabe favor avisar, la culpa es de @raul338 me hace cansar la vista con sus comentarios  :xD
:¬¬