Buenas, tengo el siguiente problema, llevo semanas tratando de guardar un dibujo en SQLSERVER 2005, ya tengo la tabla con el campo image.
El programa debe ser capaz de lograr dibujar con el mouse lo que sea y guardar ese dibujo en la BD y posteriormente poderlo recuperar cuando se desea. Actualmente el sistema logra dibujar sin problemas, pero no logro guardarlo.
El error exactamente es: "No se controló NullReferenceException" en la siguiente linea de código:
pictureBox1.Image.Save(stream,System.Drawing.Imagi ng.ImageFormat.Jpeg);
Asumo que no estoy capturando las lineas dibujadas, y estoy enviando un valor NULO. Realmente ya no se como hacerlo, espero me puedan ayudar con algún ejemplo sobre mi propio código.
En la espera de sus comentarios.
Coloco el codigo;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;
namespace WindowsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("data source = .; initial catalog = SICOF; user id = sa; password = 1234");
SqlCommand com = new SqlCommand("insert into TABLAIMAGEN(CODIGO,IMAGEN) values(1,@Pic)", con);
MemoryStream stream=new MemoryStream();
pictureBox1.Image.Save(stream,System.Drawing.Imagi ng.ImageFormat.Jpeg);
byte[] pic=stream.ToArray();
com.Parameters.AddWithValue("@Pic", pic);
try
{
con.Open();
com.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
SqlConnection connect = new SqlConnection("data source = .; initial catalog = PRUEBAIMAGEN; user id = sa; password = 1234");
SqlCommand command = new SqlCommand("select IMAGEN from TABLAIMAGEN where CODIGO=1", connect);
SqlDataAdapter dp = new SqlDataAdapter(command);
DataSet ds = new DataSet("MyImages");
byte[] MyData = new byte[0];
dp.Fill(ds, "MyImages");
DataRow myRow;
myRow = ds.Tables["MyImages"].Rows[0];
MyData = (byte[])myRow["fldPic"];
MemoryStream stream = new MemoryStream(MyData);
pictureBox2.Image = Image.FromStream(stream);
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
Graphics objGrafico = pictureBox1.CreateGraphics();
Pen objLapiz = new Pen(Color.Blue, (float)2);
objGrafico.DrawEllipse(objLapiz, e.X, e.Y, (float)2, (float)2);
}
}
}