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");
}
}
}