قصد داریم توو این پروژه عکسمون رو تبدیل با باینری کنیم و توو دیتابیس ذخیره کنیم و دوباره اونو برگردونیم. این کار خیلی کاربرد داره توو پروژه ها. مخصوصا زمان ذخیره و بازیابی عکس مثل برنامه هایی که تووش اطلاعات پرسنلی یا کالا رو وارد میکنن توو سازمان ها و فروشگاه ها و... بزار یجور بگم که مبتدیا هم راحت تر درک کنن. دوستای عزیزم. اگه به پروژه های ثبت اطلاعات مثل دفترچه تلفن نگاه کنید کارش ثبت و ویرایش و حذف اطلاعات مخاطب هاست. ما به کمک این پروژه ای که در ادامه میخوایم بنویسیم میتونیم عکس رو هم ذخیره کنیم داخل دیتابیسمون (پایگاه داده ها). دیگه باید چغندر باشین نفهمیده باشین :/
using System.IO;
public OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; data source=|DataDirectory|\data.mdb;");
public OleDbCommand com = new OleDbCommand();
try
{
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] bytes = ms.GetBuffer();
con.Close();
string strSql = "INSERT INTO pic (id, pic) VALUES (?,?)";
using (OleDbCommand dbCmd = new OleDbCommand(strSql, con))
{
dbCmd.CommandType = CommandType.Text;
dbCmd.Parameters.AddWithValue("id", 1);
dbCmd.Parameters.AddWithValue("pic", OleDbType.Binary).Value = bytes;
con.Open();
dbCmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Saved successful :)");
}
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
کدا رو ببینید متوجه میشین چیز خاصی نداره اول که فایل استریم رو تعریف کردیم بعد بایت رو. بعدشم که عکس رو میریزم توو بایت و بعدشم بایت رو میریزیم توو دیتابیس. بعد دیتابیس رو میریزیم توو برنامه کلا یه بریز بریزی برا خودمون راه میندازیم... بعضی کد هارو از قصد گسترده نکردم که حالتون گرفته شه خودتون برین کدشو بنویسین D: مثل اون آیدی که برابرش کردم با یک درحالی که در ادامه فرآیند برنامه دیگه جوابتون میکنه و...
خب این از این به همین سادگی. الان اگه یه عکسی توو پیکچر باکستون باشه و دکمه سیو رو بزنین اون عکس تبدیل میشه با باینتری و میره توو دیتابیس.
حالا ما میخوایم اون عکس رو که رفت توو دیتابیس به نمایش دربیاریم ینی دوباره تبدیلش کنیم به عکس خوشگل و گرافیکی خودمون. برای اینکار که بهش میگیم اعمال برگشت توو رویداد باتن show کد زیر رو بزنین:
try
{
GC.Collect(); //متد تخلیه منابع
con.Open();
OleDbCommand com = new OleDbCommand("SELECT pic FROM Pic WHERE id=@ab", con);
com.Parameters.AddWithValue("@ab", 1);
OleDbDataReader myReader = com.ExecuteReader();
if (myReader.Read())
{
MemoryStream ms = new MemoryStream((byte[])(myReader.GetValue(0)));
pictureBox2.Image = Image.FromStream(ms);
}
con.Close();
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
کد بالا هم جنبه تحقیقاتی داره برین تووش ببینین چ خبره :) ولی خب درکل اینم چیز سختی نداره و سلکت کردن اطلاعات از دیتابیس که همون عکس ماست به صورت باینری و تبدیل اون به عکس و ریختن اون توو پیکچر باکس...
خب بحث تمومه. وظیفه داشتم جای خالی این پست رو پر کنم. الباقی ماجرا گردن خودتونه که برین کدارو انگولک کنین و خوب درکشون کنین. و کم و کاستی هارو جبران کنین. بازم به خودتون خیلی فشار آوردین و واشر سرسیلندر سوزوندین و با این حال نفهمیدین چی به چیه، اون پایین کامنت کنین تا بعد از مدتی جوابتون رو بدم :( *شب بخیر*
Virus32.blog.ir
سلام داداش
کامنت اول واس ماس