storing image
i am trying to store a image in sqlserver database and retrieve the image from it.
Code:
public class Item
{
private int code;
private string name;
private float price;
private Category category;
private byte[] photo;
public Item()
{
}
public Item(int code, string name)
{
this.Code = code;
this.Name = name;
}
public Item(int code, string name, float price) : this(code,name)
{
this.Price = price;
}
public int Code
{
get
{
return this.code;
}
set
{
this.code = value;
}
}
public string Name
{
get
{
return this.name;
}
set
{
this.name = value;
}
}
public float Price
{
get
{
return this.price;
}
set
{
this.price = value;
}
}
public Category Category
{
get
{
return this.category;
}
set
{
this.category = value;
}
}
public byte[] Photo
{
get { return this.photo; }
set { this.photo = value; }
}
}
picture is stored in db but when i try to retrieve it,it returning null reference.
Code:
public class ItemsDAL
{
private string selectItemByCode = "Select * from ItemsWithCategory where code=@code";
private string selectAllItems = "Select * from ItemWithCategory"; // View
private string insertItem = "InsertImage";
private string selectImage = "Select Picture from Items where code =107";
public void InserItem(Item pic)
{
SqlConnection con = new SqlConnection(DALHelper.ConnectionString);
SqlCommand cmd = new SqlCommand(this.insertItem,con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = this.insertItem;
cmd.Parameters.Add(new SqlParameter("@photo", SqlDbType.Image));
con.Open();
try
{
cmd.Parameters["@photo"].Value = pic.Photo;
cmd.ExecuteNonQuery();
}
finally
{
con.Close();
}
}
public byte[] GetPicture()
{
SqlConnection con = new SqlConnection(DALHelper.ConnectionString);
SqlCommand cmd = new SqlCommand(this.selectImage, con);
//cmd.Parameters.Add(new SqlParameter("@code", code));
Item item = null;
SqlDataReader dr = null;
con.Open();
try
{
dr = cmd.ExecuteReader();
if (dr.Read())
{
item.Photo = (byte[])(dr["Picture"]);
}
}
finally
{
if (dr != null) dr.Close();
con.Close();
}
return item.Photo;
}
}
public partial class ManageItemsForm : BaseForm
{
Item itm;
ItemsDAL itemDal = new ItemsDAL();
MemoryStream mem = new MemoryStream();
public ManageItemsForm()
{
InitializeComponent();
itm = new Item();
}
private void ManageItemsForm_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
itm.Photo = mem.GetBuffer();
itemDal.InserItem(itm);
this.pbxItem.Image.Save(mem, this.pbxItem.Image.RawFormat);
}
private void btnSelectCode_Click(object sender, EventArgs e)
{
itemDal.GetPicture();
MemoryStream ms = new MemoryStream(itm.Photo);
this.pbxItem.Image = Image.FromStream(ms);
}
}
it returns null reference when i try to debug it.
in this line, it throws an exception
item.Photo = (byte[])(dr["Picture"]);
|