يوفر SQL Server نوع بيانات خاصًا: الصورة، وهو نوع يحتوي على بيانات ثنائية. يوضح لك المثال أدناه كيفية وضع نص أو صور في قاعدة بيانات. سنرى في هذه المقالة كيفية تخزين الصور وقراءتها في SQL Server.
1. إنشاء جدول:
قم بإنشاء جدول بهذه البنية في SQL SERVER:
2. قم بتخزين الصور في قاعدة بيانات SQL SERVER
لتخزينها في الجدول، يجب عليك أولاً تحميلها إلى خادم الويب الخاص بك. يمكنك تطوير نموذج ويب يُستخدم لاستيراد الصور من عنصر تحكم الويب TextBox في العميل يأتي خادم الويب الخاص بك. اضبط خاصية encType على: myltipart/formdata.Stream
imgdatastream = File1.PostedFile.InputStream;
int
imgdatalen = File1.PostedFile.ContentLength;
imgtype = File1.PostedFile.ContentType
;
byte[imgdatalen];
int n = imgdatastream.Read(imgdata, 0, imgdatalen);
string connstr=((NameValueCollection)Context.GetConfig("appSettings"))["connstr"]
;
أمر SqlCommand = new SqlCommand
("INSERT INTO ImageStore(imgtitle, imgtype, imgdata)
VALUES (@imgtitle, @imgtype, @imgdata)
"
، Connection );
;
paramTitle.Value
=
imgtitle
;
new SqlParameter(
"@imgtype", SqlDbType.VarChar, 50 );
paramType.Value
=
imgtype
;
3.
استأنف القراءة من قاعدة البيانات.
الآن دعنا نقرأ البيانات التي أدخلناها من SQL Server، وسنقوم بإخراج الصورة إلى متصفحك، ويمكنك أيضًا تخزينها في الموقع الذي تريده.
Private void Page_Load(object sender, System.EventArgs e)
{
string imgid =Request.QueryString
["imgid"];
string connstr=((NameValueCollection)
context.GetConfig("appSettings"))["connstr"];
"
حدد
imgdata، imgtype FROM ImageStore id = " + imgid؛
SqlConnection Connection = new SqlConnection(connstr
)
;
(dr.Read())
{
Response.ContentType = dr["imgtype"].ToString();
Response.BinaryWrite( (byte[]) dr["imgdata"]
}
Connection.Close()
}
لاحظ ذلك هو Response.BinaryWrite بدلاً من Response.Write
إليك برنامج تخزين وقراءة لـ C# Winform. يرجى مقارنة الاختلافات بنفسك (للتيسير، قمت بتبسيط حقول قاعدة البيانات إلى قسمين: imgtitle و imgdata.
باستخدام النظام؛
باستخدام System.Drawing؛
باستخدام System.Collections؛
باستخدام System.ComponentModel؛
باستخدام System.Windows.Forms؛
باستخدام System! .Data
;
use
System.IO
;
Button Button1;
///
/// متغيرات المصمم المطلوبة
///
public System.ComponentModel.Containercons = null;
Private
string ConnectionString = "Integrated Security=SSPI;Initial Catalog=;DataSource=localhost;";
;
public SqlCommand = null;
public System.Windows.Forms.Button Button2;
public
System.Windows.Forms.PictureBoxpic1
;
public System.Windows.Forms.OpenFileDialog openFileDialog1;
تسمية التسمية 2؛
سلسلة خاصة nowId=null;
publicForm1
()
{
//
// مطلوب لدعم مصمم نماذج Windows
//
InitializeComponent(
)
;
استدعاءInitializeComponent
//
}
///
/// قم بتنظيف أي موارد قيد الاستخدام.
///
تجاوز محمي void Dispose( bool dispose )
{
if (conn.State == ConnectionState.Open)
conn.Close();
if( disposition )
{
if (components != null)
{
Components.Dispose()
}
}
base.Dispose( disposition);
}
#region رمز Windows Form Designer
///
/// يدعم المصمم الطريقة المطلوبة - لا تستخدم محرر التعليمات البرمجية لتعديل
/// محتويات هذه الطريقة.
///
public void InstallationComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.pic1 = new System.Windows.Forms.PictureBox();
this.button2 = new System.Windows.Forms. Button();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.label2
=
new
System.Windows.Forms.Label();
this.SuspendLayout
();
.Location = new System.Drawing.Point(0, 40);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(264, 48);
this.button1.TabIndex = 0 ;
this.button1.Text ="
أضف صورة جديدة";
this.button1.Click
+
= new System.EventHandler(this.button1_Click)
;
280, 8);
this.pic1.Name = "pic1";
this.pic1.Size = new System.Drawing.Size(344,
264
)
;
/
// Button2
//
this.button2.Location = new System.Drawing.Point(0, 104);
this.button2.Name
= "button2";
);
this.button2.TabIndex = 4;
this.button2.Text
= "استعادة الصورة من قاعدة البيانات";
this.button2.Click
+
= new System.EventHandler(this.button2_Click)
;
.Filter = ""ملفات الصور (*.jpg, *.bmp, *.gif)|*.jpg|*.bmp|*.gif"";
//
// label2
//
this.label2.Location = new System .Drawing.Point(0, 152);
this.label2.Name = "label2";
this.label2.Size
=
new System.Drawing.Size(264, 48)
;
Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(632, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[ ] {
this.label2,
this.button2,
this.pic1,
this.button1});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load) ;
this.ResumeLayout(false);
}
#endregion
///
/// نقطة الدخول الرئيسية للتطبيق.
///
[STAThread]
static void Main()
{
Application.Run(new Form1()
}
زر الفراغ الخاص 1_Click(object sender, System.EventArgs e)