CLR: .Net / Mono / Boo / Otros CLR > C#
REFERECIA A OBJETO NO ESTABLECIDA COMO INSTANCIA A UN OBJETO
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
[#] Página Siguiente
Ir a la versión completa