ذخیره و بازیابی عکس در دیتابیس
یک برنامه ویندوزی ایجاد کرده و دو کنترل pictureBox و سه دکمه و یک TextBox مانند شکل زیر بر روی آن قرار دهید :
مراحل زیر را برای اجاد یک دیتابیس و جدول طی کنید :
برای انتخاب عکس بر روی button1 دو بار کلیک کرده و کدهای زیر را در داخل ان بنویسید :
private void button1_Click(object sender, EventArgs e) { OpenFileDialog OpenFileDialog1 = new OpenFileDialog(); if (OpenFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = OpenFileDialog1.SafeFileName; pictureBox1.ImageLocation = OpenFileDialog1.FileName; } }
برای ذخیره عکس بر روی button2 دو بار کلیک کرده و کدهای زیر را در داخل ان بنویسید :
private void button2_Click(object sender, EventArgs e) { SqlConnection SqlConnection1 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\arta\Documents\SaveImage.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); string query = "Insert Into Table1 (Image) Values (@Image)"; SqlCommand SqlCommand1 = new SqlCommand(query, SqlConnection1); SqlCommand1.Parameters.AddWithValue("@Image", ImageToByte(pictureBox1.Image)); SqlConnection1.Open(); SqlCommand1.ExecuteNonQuery(); SqlConnection1.Close(); }
برای بازیابی عکس بر روی button3 دو بار کلیک کرده و کدهای زیر را در داخل ان بنویسید :
private void button3_Click(object sender, EventArgs e) { SqlConnection SqlConnection1 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\arta\Documents\SaveImage.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); MemoryStream stream = new MemoryStream(); SqlConnection1.Open(); SqlCommand command = new SqlCommand("select Image from Table1", SqlConnection1); byte[] image = (byte[])command.ExecuteScalar(); stream.Write(image, 0, image.Length); SqlConnection1.Close(); Bitmap bitmap = new Bitmap(stream); pictureBox2.Image = bitmap; }
همچنین کد زیر را در زیر سازنده کلاس فرم بنویسید :
public static byte[] ImageToByte(Image img) { ImageConverter converter = new ImageConverter(); return (byte[])converter.ConvertTo(img, typeof(byte[])); }
برنامه را اجرا کرده با دکمه اول یک عکس انتخاب و با دکمه دوم آن را ذخیره و با دکمه سوم آنرا بازیابی نمایید.
کل کد
using System; using System.Drawing; using System.Windows.Forms; using System.Data.SqlClient; using System.IO; namespace SaveImeage { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public static byte[] ImageToByte(Image img) { ImageConverter converter = new ImageConverter(); return (byte[])converter.ConvertTo(img, typeof(byte[])); } private void button1_Click(object sender, EventArgs e) { OpenFileDialog OpenFileDialog1 = new OpenFileDialog(); if (OpenFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = OpenFileDialog1.SafeFileName; pictureBox1.ImageLocation = OpenFileDialog1.FileName; } } private void button2_Click(object sender, EventArgs e) { SqlConnection SqlConnection1 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\arta\Documents\SaveImage.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); string query = "Insert Into Table1 (Image) Values (@Image)"; SqlCommand SqlCommand1 = new SqlCommand(query, SqlConnection1); SqlCommand1.Parameters.AddWithValue("@Image", ImageToByte(pictureBox1.Image)); SqlConnection1.Open(); SqlCommand1.ExecuteNonQuery(); SqlConnection1.Close(); } private void button3_Click(object sender, EventArgs e) { SqlConnection SqlConnection1 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\arta\Documents\SaveImage.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); MemoryStream stream = new MemoryStream(); SqlConnection1.Open(); SqlCommand command = new SqlCommand("select Image from Table1", SqlConnection1); byte[] image = (byte[])command.ExecuteScalar(); stream.Write(image, 0, image.Length); SqlConnection1.Close(); Bitmap bitmap = new Bitmap(stream); pictureBox2.Image = bitmap; } } }
سلام خسته نباشید خدمت شما آقای ابراهیمی
چندتا سوال از حضورتون داشتم که مجبور شدم اینجا مزاحمتون بشم
1-با لینکیو یک برنامه نوشتم میخوام عکس ذخیره کنم داخل دیتابیس و برگردونم عکس رو چنین کدی برای لینکیو هست؟
2-آوردن یک ستون از دیتابیس داخل کامبوباکس……من میذارم ولی تو کامبوباکس میاد …..name=کتاب……name= کنار هر کدوم از سطر ها میاد
3-واینکه هر چی توی اینترنت گشتم کد مناسبی برای استفاده از بارکدخوان پیدا نکردم ممنون میشم تواین زمینه هم راهنماییم کنید
خیلی ممنونم ازتون
سلام دوست عزیز
جواب سوال اول و دومتون تو لینک های های زیر هست :
http://www.w3-farsi.com/%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D9%88-%D8%A8%D8%A7%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C-%D8%B9%DA%A9%D8%B3-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-linq-%D8%AF%D8%B1-%D8%B3%DB%8C/
http://www.w3-farsi.com/%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%DB%8C%DA%A9-%D8%B3%D8%AA%D9%88%D9%86-%D8%AE%D8%A7%D8%B5-%D8%A7%D8%B2-%D8%AC%D8%AF%D9%88%D9%84-%D8%AF%D8%B1-combobox/
در باره سوال سوم هم به زودی آموزشش رو تو سایت میذارم
واقعا دستتون درد نکنه خیلی زحمت می کشید خیلی همیشه سر بلند باشید
ممنون از راهنمایی شما
سلام دوستان ممنون از لطفتون…
و اما شما دوست عزیز (sana) سوالتونو توی انجمن مطرح بفرمایید تا در صورت لزوم آموزش هم در سایت قرار داده بشه.
با تشکر
باسلام
باتشکر از آموزش بسیار مفید و کاملتون … امیدوارم نکات مهم برنامه نویسی رو به همین شیوه برای ما مبتدی ها قرار بدید تا یاد بگیریم .
بانشکر
سلام ممنون از این آموزش جامع،
به یک راهنمایی احتیاج دارم… ممنون می شوم اگر راهنمایی بفرمائید..
– تا ذخیره عکس در پایگاه داده، که هیچ مشکلی وجود ندارد… اما اگر بخواهیم عکس رو در فرم دیگری با یک جستجو باز کنیم چه تغییراتی باید صورت بگیرد؟..
در ضمن برای قرار دادن کل کد به طور یکجا هم یک تشکر ویژه از من پذیرا باشید..