CLR: .Net / Mono / Boo / Otros CLR > C#

 REFERECIA A OBJETO NO ESTABLECIDA COMO INSTANCIA A UN OBJETO

(1/2) > >>

Rafa_Code:
Buenas Tardes! estoy intentando guardar unos DATOS(CODIGO, DESCRIPCION,CANTIDAD,PRECIO) Y UNA FOTO. pero luego de llenar los datos y seleccionar la foto al presionar el BotonGuardar me aparece un MessageBox que dice "REFERECIA A OBJETO NO ESTABLECIDA COMO INSTANCIA A UN OBJETO" y no guarda el Registro

Aqui les dejo el codigo http://chopapp.com/#5rw3jefl 

 

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 GuardaImagenEnBD
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();

            DialogResult result = dialog.ShowDialog();

            if (DialogResult == DialogResult.OK)
            {
                pictureBox1.Image = Image.FromFile(dialog.FileName);

            }
        }

        private void button1_Click(object sender, EventArgs e)
        {

            try
            {
                System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(@"Data Source=R-PORTATIL;Initial Catalog=ProductosEjemplo;Integrated Security=True");
                using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandText = "INSERT INTO ProductosEjemplo VALUES (@CODIGO,@DESCRIPCION,@CANTIDAD,@PRECIO,@FOTO)";
                    cmd.Parameters.Add("@CODIGO", System.Data.SqlDbType.Int);
                    cmd.Parameters.Add("@DESCRIPCION", System.Data.SqlDbType.NVarChar);
                    cmd.Parameters.Add("@CANTIDAD", System.Data.SqlDbType.Int);
                    cmd.Parameters.Add("@PRECIO", System.Data.SqlDbType.SmallMoney);
                    cmd.Parameters.Add("@FOTO", System.Data.SqlDbType.Image);


                    // Asignando los valores a los atributos
                    cmd.Parameters["@CODIGO"].Value = int.Parse(txtCodigo.Text);
                    cmd.Parameters["@DESCRIPCION"].Value = txtDescripcion.Text;
                    cmd.Parameters["@CANTIDAD"].Value = int.Parse(txtCantidad.Text);
                    cmd.Parameters["@PRECIO"].Value = float.Parse(txtPrecio.Text);


                    //Asignando el valor de la imagen
                    // Stream usado como buffer
                    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
                    {
                        // Se guarda la imagen en el buffer
                        pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                        // Se extraen los bytes del buffer para asignarlos como valor para el
                        // parámetro.
                        cmd.Parameters["@FOTO"].Value = ms.GetBuffer();
                    }
                    con.Open();
                    cmd.ExecuteNonQuery();
                }
                con.Close();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            MessageBox.Show("Registro Guardado Correctamente");
        }
    }
}

 :ayuda: :ayuda: :ayuda: :ayuda: :ayuda: :ayuda: :ayuda: :ayuda: :ayuda:

gabio2:
Seria muyyyy pero muyyy bueno que pongas un punto de interrupción en el evento del botón Guardar y ejecutes paso a paso con la tecla F10 tú código, para saber exactamente en que línea falla, le heche una mirada rápida y pues hasta ahorita mi única duda que me surgio es por que usas esto:

using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand())
{
....
...
..
.
}

En vez de usarlo así:

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();


Primera vez que veo que usen algo así no digo que no sea correcto, simplemente curiosidad nunca había visto ese tipo de código..

Bueno, en todo caso.. primero verífica en que linea te envia al Catch ...  por que hasta donde ví lo estás haciendo bien, salvo esa duda que me surgio ...


Saludos. :)

Rafa_Code:
Hola mi pana por constumbre escribo eso asi porque algunas vces se me olvida poner el using en la parte primaria. Hice lo que me dijiste con el punto de interrupcion y aqui lo arroja o se para

Rafa_Code:
i pana aqui le puse breakpoint y mira

[/img]

gabio2:
no se ve tu imagen... vuelve a intentarlo.. :)....

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa