كيفية حفظ صور في قاعدة بيانات SQL Server باستخدام ADO.NET
1- أنشاء و افتح قاعدة بيانات في برنامج Sql Server Managements Studio بأسم DB من ثم
2- بعد أنشاء قاعدة البيانات قم بتنفيذ الاستعلام من خلال خيار New Query الأتي :
create table Images
(
ImagesID int primary key,
ImagesName nvarchar(25),
Photo image
)
3 - قم بانشاء الواجهة التالية GUI في برنامج Visual Studio 2010
4- سمي العناصر بالترتيب التالي
|
txtNo التسلسل
|
TextBox
|
|
txtImageName اسم صاحب الصورة
|
TextBox
|
|
btnNew جديد
|
Button
|
|
btnSave حفظ
|
Button
|
|
btnLoadImage تحميل الصورة
|
Button
|
|
من قائمة الخصائص
a. Filter : Images|*.jpg b. DefaultExt : jpg |
اضافة اداة openFileDialog1
|
|
من قائمة خصائص
SizeMode: StretchImage
|
اضافة اداة pictureBox1
|
|
using System.IO; using System.Data.SqlClient; |
اضافة
|
5- قم نسخ الكود لأجل عمل البرنامج
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.IO;
using System.Data.SqlClient;
namespace SaveReadImagesFromSql
{
public partial class Form1 : Form
{
//---------------------
SqlConnection conn = null;
DataRow dr = null;
String ImageFile = null;
DataSet dsImage=null;
SqlDataAdapter daImage = null;
//----------------------
public void Initdata()
{
// تعريف اتصال
conn = new SqlConnection(@"Data Source=MOHAMMAD-PC\SERVER2014;Initial Catalog=DB;Integrated Security=True");
// 1. تعريف نسخة عن قاعدة البيانات
dsImage = new DataSet();
// 2.ربط الاتصال لاجل مليء النسخة بالبيانات
daImage = new SqlDataAdapter("select * from Images", conn);
// 3. تنفيذ الحذف و المليء و التحديث والاضافة
SqlCommandBuilder cmdBldr = new SqlCommandBuilder(daImage);
// 4. مليء النسخة بالبيانات
daImage.Fill(dsImage);
}
private byte[] getImageData()
{
byte[] imagedata;
FileStream fs = new FileStream(ImageFile, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(fs);
imagedata = new byte[fs.Length];
reader.Read(imagedata, 0, (int)fs.Length);
reader.Close();
return imagedata;
}
//----------------------------------
public Form1()
{
InitializeComponent();
Initdata();
}
private void btnLoadImage_Click(object sender, EventArgs e)
{
DialogResult rs = openFileDialog1.ShowDialog();
if (rs == DialogResult.OK)
{
ImageFile = openFileDialog1.FileName;
pictureBox1.LoadAsync(openFileDialog1.FileName);
}
}
private void Form1_Load(object sender, EventArgs e)
{
btnNew.Enabled = true;
btnSave.Enabled = false;
btnLoadImage.Enabled = false;
txtImageName.ReadOnly = true;
txtNo.ReadOnly = true;
}
private void btnNew_Click(object sender, EventArgs e)
{
btnNew.Enabled = false;
btnSave.Enabled = true;
btnLoadImage.Enabled = true;
txtImageName.Text = "";
txtNo.Text = "";
txtImageName.ReadOnly = false;
txtNo.ReadOnly = false;
pictureBox1.Image = null;
//انشاء سجل جديد
dr = dsImage.Tables[0].NewRow();
}
private void btnSave_Click(object sender, EventArgs e)
{
btnNew.Enabled = true;
btnSave.Enabled = false;
btnLoadImage.Enabled = false;
txtImageName.ReadOnly = true;
txtNo.ReadOnly = true;
dr[0] = Convert.ToInt32(txtNo.Text);
dr[1] = txtImageName.Text;
dr[2] = getImageData();
//اضافة سجل النسخة قاعدة البيانات
dsImage.Tables[0].Rows.Add(dr);
//تحديث قاعدة البيانات الاصلية من خلال النسخة
daImage.Update(dsImage);
}
}
}