تبليغاتX
دات نت- آموزش سی شارپ و ویژوال بیسیک-

دات نت- آموزش سی شارپ و ویژوال بیسیک-

دات نت- آموزش سی شارپ و ویژوال بیسیک-

صدور پيغامهاي فارسي بجاي پيغامهاي Error اكسس

يكي از دوستان وبلاگي من پرسيده بود چطوري پيغام Error مربوط به ورود ركورد تكراري را در اكسس فارسي كنيم . ترجيح دادم جواب كاملي براي سئوال ايشون بدم تا همه استفاده كنن. بنابراين ابتدا جواب ايشون رو ميدم و بعد از اون بطور كاملتر براي همه وبلاگي هاي عزيز روش كنترل خطا را تشريح مي كنم .

(توجه داشته باشيد كه در زير كدهاي نوشته شده از راست به چپ نمايش داده مي شوند)

جواب دوست ما:
در رويداد
OnError مربوط به فرم ورود اطلاعات اين كد را مي نويسيم:

 

If DataErr = 3022 Then
MsgBox "اطلاعات وارده تكراري است"
Response = acDataErrContinue
End If


جواب كلي :
اساسا ، هر خطا در اكسس يا
VB يك كد توليد مي كند . برنامه نويسان بايد يك بانك اطلاعات از كد خطاهايي كه رخ مي دهد داشته باشند تا بتوانند با چك كردن شماره خطا پيغام فارسي مناسب آن خطا را صادر كنند .

بطور كلي دو روش كنترل خطا از اين قرارند:

1- اگر خطا مربوط به كل فرم باشد بايد از طريق رويداد
OnError فرم كنترل شود .
معمولا خطاهايي كه مربوط به كدنويسي ما نبوده و صرفا توسط اكسس و در واكنش به اشتباهات كاربر صادر مي شود در اين رويداد كنترل مي شود . در اين رويداد ، پارامتر
DataErr حاوي كد خطاست. (بعبارت واضح تر اگر مي خواهيد كد مربوط به هر Error را شناسايي كنيد مي توانيد اين دستور در رويداد OnError فرم بنويسيد: MsgBox DataErr )

بطور كلي بعد از اينكه كد خطاها را شناسايي كرديد با نوشتن قالب برنامه زير در رويداد
OnError فرم مي توانيد خطاها را كنترل كنيد :

Dim Str as String

Select Case DataErr
Case 3022
Str="اطلاعات وارده تكراري است"
Case 2237
Str = "اطلاعات وارده در ليست وجود ندارد"
'خط فوق براي مواردي است كه يك مقداري كه در كمبو باكس وجود ندارد ، تايپ شده باشد
Case ...
Str=...
....
End Select

Msgbox Str
Response = acDataErrContinue


2- اگر خطا مربوط به كدهايي باشد كه خودمان در يك Sub نوشته ايم :
در اين روش بايد در ابتداي
Sub با دستور : <اسم زير روال كنترل خطا> On Error Goto ، كنترل خطا را به يك روال كنترل خطا ارجاع دهيم.
( تمام كدهايي كه ويزارد
Command Button بطور خودكار در رويداد OnClick دكمه ها ايجاد مي كند نمونه خوبي براي اين روش هستند. ضمنا در اين روش بكمك Err.Number كد خطا شناسايي مي شود )

+ نوشته شده در  دوشنبه بیست و نهم بهمن 1386ساعت 11:54  توسط من  | 

XML در دات نت 2

 

در بخش اول اين مقاله به بررسي مفاهيم وچالش هاي موجود در زمينه طراحي و پياده سازي برنامه هاي کامپيوتري بمنظور استفاده در محيط اينترنت اشاره و محيط دات نت ماکروسافت از اين زاويه، مورد بررسي اوليه قرار گرفت . در بخش دوم ، به بررسي استانداردهاي کنسرسيوم وب در دات نت ، کلاس هاي XML در دات نت و امکانات امنيتي در ارتباط با XML ، خواهيم پرداخت .
استانداردهاي کنسرسيوم وب در دات نت
امکان استفاده از XML در محيط ها و برنامه هاي متعددي وجود دارد . تحقق خواسته فوق، بکمک استانداردهائي است که توسط کنسرسيوم وب ايجاد شده است. XML در دات نت، استانداردهاي ارائه شده توسط کنسرسيوم وب را حمايت تا زمينه ارتباط متقابل بين برنامه هاي استاندارد شده ، فراهم گردد.

 :Xml Information setکنسرسيوم وب مشخصاتي را بعنوان مجموعه اطلاعات مرتبط با XML ، استاندارد و ارائه نموده است .استاندارد فوق، شامل مجموعه اي از تعاريف بمنظور استفاده توسط ساير مشخصاتي است که بنوعي به اطلاعات موجود در يک سند XML مراجعه مي نمايند. يک سند XML ، حاوي تعدادي از مجموعه اطلاعات ارائه شده در استاندارد فوق است . مشخصات فوق ، اطلاعات لازم بمنظورتشريح ساختار يک سند XML را ارائه مي نمايد .يک سند XML شامل يک مجموعه اطلاعات است، اگر " خوش - شکل " بوده و محدوديت هاي تعريف شده در رابطه با Namespace را در مجموعه اطلاعات ومشخصات XML ، تامين نمايد . اغلب استانداردهاي XML کنسرسيوم وب، از تعاريف ارائه شده در مشخصه فوق ، اقتباس ( مشتق ) شده اند.براي اطلاعات تکميلي مي توان به آدرس http://www.w3.org/TR/xml-infoset مراجعه کرد .

XML 1.0 Namespace .
استاندارد فوق ،ضوابط لازم بمنظور ايجاد يک شي داده بصورت يک سند XML ، را تعريف مي نمايد . مشخصات فوق همچنين ،ساختار فيزيکي و منطقي يک سند XML و ساير خصايص مربوطه را تعريف مي نمايد. براي اطلاعات تکميلي مي توان به آدرس http://www.w3.org/Tr/REC-xml مراجعه استفاده کرد.namespace ها درXML يک namespace را تعريف و نحوه استفاده از namespace در زمان ايجاد يک گرامر XML را که شامل المان ها و خصلت هائي است، مشخص مي نمايد . براي اطلاعات تکميلي مي توان به آدرس http://www.w3.org/TR/REC-xml-names مراجعه کرد .

XML Path Language ( XPath) 1.0 :
استاندارد XPath ، گرامر و سمنتيک مورد نياز براي آدرس دهي بخش هاي متفاوت يک سند XML را مشخص مي نمايد. XPath ، همچنين شامل امکانات پايه براي انجام عمليات در رابطه با رشته ها ، اعداد و منطق است . براي مشاهده اطلاعات تکميلي مي توان به آدرس http://www.w3.org/TR/XPath مراجعه کرد .

XSL Transformation (XSLT) 1.0 :
استاندارد XSLT ، گرامر و سمنتيک XSLT را تعريف و زباني براي تبديل اسناد XML به فرمت هاي ديگر است . تبديل مورد نظر( بيان شده ) در XSLT يک Style Sheet ناميده مي شود . براي مشاهده اطلاعات تکميلي مي توان به آدرس http://www.w3.org/TR/XSLT مراجعه کرد .

Document Object Model )DOM) :
استاندارد DOM سطح يک و دو، اينترفيس لازم را بمنظور دستيابي و انجام عملياتي نظير: بهنگام سازي Style ،محتويات و ساختار يک سند از طريق برنامه نويسي ، فراهم مي نمايد . براي مشاهده اطلاعات تکميلي مي توان به آدرس http://www.w3.org/DOM مراجعه کرد .

XML Schema Definition Language )XSD) :
استاندارد XSD ، روشي براي تشريح ساختار ، محتويات و سمنتيک يک سند XML است . Schema امکان استفاده از واژه هاي مشترک را فراهم مي نمايد . براي مشاهده اطلاعات تکميلي مي توان به آدرس http://www.w3.org/XML/Schema مراجعه کرد .

جدول زير نسخه هاي پياده سازي شده هر يک از استانداردهاي فوق را در دات نت نشان مي دهد :

استاندارد کنسرسيوم وب

namespace مربوطه در دات نت

XML 1.0 and Namespaces in XML

System.Xml

XPath

System.Xml System.Xml.XPath

XSLT

System.Xml.Xsl

DOM Level 1

System.Xml

DOM Level 2 Core

System.Xml

XML Schemas

System.Xml System.Xml.Schemas

XML Schema Object Model(SOM)

System.Xml.Schemas


دات نت با ارائه namespace و کلاس هاي پايه از استانداردهاي ارائه شده توسط کنسرسيوم وب، حمايت مي نمايد . جدول زير نسخه هاي پياده سازي شده استانداردهاي کنسرسيوم وب، در دات نت را نشان مي دهد .

W3C XML standard

.NET Framework namespace

.NET Framework class

XML 1.0 and Namespaces in XML

System.Xml

Not applicable

XPath

System.Xml System.Xml.XPath

XPath base class

XSLT

System.Xml.Xsl

XslTransform base class

DOM Level 1

System.Xml

XmlDocument class

DOM Level 2 Core

System.Xml

XmlDocument class

XML Schemas

System.Xml System.Xml.Schemas

XmlSchema

XML Schema Object Model(SOM)

System.Xml.Schemas

XmlSchema


مروري بر کلاس هاي XML در دات نت
کلاس هاي پايه تجريدي در دات نت ، اساس مبادله اطلاعات مي باشند . جدول زير کلاس هاي پايه در فريمورک دات نت را نشان مي دهد :

Abstract base class

کلاس های  مشتق شده

XmlReader

XmlTextReader XmlNodeReader XmlValidatingReader

XmlWriter

XmlTextWriter

XmlNavigator

XmlPathNavigator

XmlResolver

XmlUrlResolver



مقايسه بين MSXML 4.0 و دات نت
ماکروسافت دو روش متفاوت بمنظور کار با XML ، در اختيار برنامه نويسان قرار داده است :

MSXML
، که در ابتدا پارسر XML ناميده مي شد.
کلاس هاي XML فريمورک دات نت
MSXML 4.0
، با پارسر MSXML جايگزين شده است . عملکرد MSXML 4.0 در اغلب موارد مشابه کلاس هاي فريمورک دات نت است . تفاوت عمده در نحوه استفاده از عناصر است . در MSXML بمنظور ارائه امکانات از اشياء COM)Componenet Object Model) استفاده شده ( ازManaged code استفاده نمي گردد ) و داراي امکانات از قبل ساخته اي براي SAX)Simple API for XML) است .
MSXML 4.0
، شامل سرويس هاي زير است :

DOM
XSD
XPath 1.0
XSLT 1.0
SAX (
يک مدل برنامه نويسي و مشابه با DOM است )
Schema Object Model)SOM)
، شامل امکانات API اضافه ، بمنظور دستيابي به سندهاي XML Schema از طريق برنامه نويسي است .
کلاس هاي XML فريمورک دات نت ، عمليات مشابهي را نظير MSXML 4.0 انجام مي دهند. طراحي کلاس هاي فوق بگونه اي است که امکان استفاده از آنان در يک محيط مديريت يافته، خصوصا" سرويس هاي وب XML ،وجود دارد .
جدول زير ويژگي هر يک را نشان مي دهد :

استاندارد کنسرسيوم وب

MSXML  ( محيط مبتنی بر COM )

کلاس های XML فريمورک دات نت ( محيط مديريت يافته دات نت )

XML 1.0 and Namespaces in XML

yes

yes

XPath

yes

yes

XSLT

yes

yes

DOM Level 1

yes

yes

DOM Level 2 Core

no

yes

XML Schemas

yes

yes

XML Schema Object Model(SOM)

yes (فقط خواندنی)

yes

Simple API for Xml (SAX)

yes

no


XML
و امنيت در دات نت
XML
،مهمترين امکان ذخيره سازي داده ها و انتقال اطلاعات د ر فريمورک دات نت محسوب مي گردد. بنابراين تمام ملاحظات امنيتي در فريمورک دات نت، به رويکردهاي امنيتي XML مربوط مي گردد . دستيابي به سرويس هاي وب XML مي تواند محدود به سرويس گيرندگان تائيد شده و مجاز باشد( مشابه دستيابي کاربران مجاز به يک وب سايت ) .

مدل مبتني بر شي XML براي رمزنگاري اشياء
کلاس SecurityElement ، مدل XML لازم بمنظور رمزکردن اشياء را ارائه مي نمايد. کلاس فوق ، بمنظور استفاده همراه يک سيستم ايمني در نظرگرفته شده است و امکان استفاده از آن بعنوان يک کلاس شي XML عمومي وجود نخواهد داشت .

XML signature .
کنسرسيوم وب در حال پياده سازي مشخصه اي براي امضاء ديجيتالي مبتني بر XML است . System.Security.Cryphtography.xml ،مدلي مبتني بر XML براي استفاده از سيستم امنيتي فريمورک دات نت بوده که از امضاهاي XML حمايت مي نمايد. مدل فوق اين امکان را به اشياء XML خواهد داد که از طريق يک امضاء ديجيتالي تاييد گردند . رمزنگاري باعث حفاظت اطلاعات در مقابل نمايش و يا تغييرات شده وبدين ترتيب يک کانال ايمن ارتباطي ايجاد خواهد شد .

رمزنگاري سرويس هاي وب XML بمنظور انتقال . برنامه هاي مبتني بر دات نت از پروتکل SOAP ، بمنظور ارتباط با سرويس هاي وب XML استفاده مي نمايند( فرمت اوليه پيام ها ) . کتابخانه کلاس فريمورک دات نت ، ضمائم SOAP را بمنظور اجراء ، همراه با يک متد سرويس وب XML ، ارائه مي نمايد . namespace ، شامل کلاس هائي است که پروتکل هاي مورد نياز براي انتقال داده ها را فراهم مي نمايد .

ارسال مدارک تائيد شده .در موارديکه يک سند XML ايمن شده باشد ،بدون ارسال مدارک لازم، امکان دستيابي و استفاده از آن وجود نخواهد داشت. کلاس XmlTextReader ،امکان ارسال مدارک را از طريق استفاده از کلاس CredentialCache موجود در System.Net فراهم مي نمايد .

+ نوشته شده در  دوشنبه بیست و نهم بهمن 1386ساعت 11:49  توسط من  | 

تصاوير در بانک اطلاعات: از نوع داده IMAGE استفاده نکنيد

تصاوير در بانک اطلاعات: از نوع داده IMAGE استفاده نکنيد

از آنجا که مکررا ديده مي شود هنوز دوستان از نوع داده IMAGE استفاده مي کنند، لازم دانستم –با عرض پوزش- اين تذکر را بدهم: مايکروسافت قويا هشدار داده است که ديگر از نوع داده IMAGE استفاده نکنيد و به جاي آن از نوع دادة (VARBINERY(MAX استفاده کنيد؛ بايد بدانيد که نوع دادة IMAGE فقط براي سازگاري با SQL Server 2000 هنوز در SQL Server 2005 وجود دارد و در نگارش بعدي SQL Server ، ديگر اين نوع داده پشتيباني نخواهد شد.

قبل از همه، اين توضيح کوتاه را بدهم که تصوير به صورت آرايه اي از بايت‌ها در بانک اطلاعات ذخيره مي‌شود. بنا بر اين هنگام نوشتن در بانک يا خواندن از آن، بايد تبديلات لازم صورت گيرد.

اکنون اين پروژه را بامن گام به گام تکميل نماييد:

۱. يک بانک اطلاعات SQL Server به نام PhotoBank ايجاد کنيد که حاوي جدول Persons بافيلدهاي ذيل است.

 

نام فيلد

توضيح

PersonID (INT Identity)

کد شخص

FLName

نام و نام خانوادگي

Pohto

تصوير

 

۲. در ويژوال استوديو يک پروژة Windows Application ايجاد کنيد.

۳. دو GroupBox به فرم بيافزاييد.

۴. در GroupBox اول (سمت چپ) دو Button، يک Lable، يک TextBox و يک PictureBox اضافه کنيد.

۵. در GroupBox دوم يک ListBox و يک PictureBox اضافه کنيد.

 ۶. اکنون بر روي فرم کليک مضاعف کرده تا ضمن ايجاد متد Load، به ويرايشگر کد منتقل شويد.

اگر فضاي نام‌هاي ذيل وجود ندارد آن‌ها را وارد کنيد:

VB:

 

Imports System.Data

Imports System.Data.SqlClient

Imports System.IO

 

 

C#:

 

using System.Data;

using System.Data.SqlClient;

using System.IO;

 

 

۷. متغيرهاي ذيل را داخل کلاس اعلان کنيد:

VB:

 

Private strSQL As String

Private con As SqlConnection

Private da As SqlDataAdapter

Private com As SqlCommand

Private ds As DataSet

 

 

C#:

private string strSQL;

private SqlConnection con;

private SqlDataAdapter da;

private SqlCommand com;

private DataSet ds;

 

۸. اکنون اتصال را در متد Load فرم تنظيم کنيد:

VB:

 

Private Sub frmPhoto_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

 Handles MyBase.Load

  Try

    con = New SqlConnection("Data Source=localhost;Initial " _

    & "Catalog=PhotoBank;Integrated Security=True")

  Catch ex As Exception

    MessageBox.Show(ex.Message)

  End Try

End Sub

 

 

C#:

 

private void frmPhoto_Load(object sender, EventArgs e)

{

  try

  {

    con = new SqlConnection("Data Source=localhost;Initial "

      + "Catalog=PhotoBank;Integrated Security=True");

  }

  catch (SystemException ex)

  {

      MessageBox.Show(ex.Message);

  }

}

 

 

۹.  متد دکمة اول را (که براي انتخاب تصوير است) اين گونه بنويسيد:

VB:

 

Private Sub Button1_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles btnChoose.Click

   Try

      Dim dlgOpen As New OpenFileDialog

      With dlgOpen

         .Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF"

         .Title = "انتخاب تصوير"

         If .ShowDialog = Windows.Forms.DialogResult.OK Then

             Me.PictureBox1.Image = Image.FromFile(.FileName)

         End If

      End With

   Catch ex As Exception

        MessageBox.Show(ex.Message)

   End Try

End Sub

 

 

C#:

 

private void button1_Click(object sender, EventArgs e)

{

   try

   {

       OpenFileDialog dlgOpen = new OpenFileDialog();

       dlgOpen.Filter =

          "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF";

       dlgOpen.Title = "انتخاب تصوير";

       if (dlgOpen.ShowDialog() == DialogResult.OK)

           pictureBox1.Image = Image.FromFile(dlgOpen.FileName);

   }

   catch (SystemException ex)

   {

       MessageBox.Show(ex.Message);

   }

}

 

 

۱۰. و متد دکمة دوم براي درج و ذخيرة تصوير و نام نام خانوادگيِ شخص را اين گونه بنويسيد:

VB:

 

Private Sub Button2_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Button2.Click

   Try

       strSQL = "INSERT INTO Persons (FLName, Photo) VALUES (@FLName, @Photo)"

       Dim ms As New MemoryStream

       Me.PictureBox1.Image.Save(ms, Me.PictureBox1.Image.RawFormat)

       Dim arrPic() As Byte = ms.GetBuffer

       ms.Close()

       con.Open()

       com = New SqlCommand(strSQL, con)

       com.Parameters.Add("@FLName", SqlDbType.NVarChar, 50).Value = Me.TextBox1.Text

       com.Parameters.Add("@Photo", SqlDbType.VarBinary).Value = arrPic

       com.ExecuteNonQuery()

       con.Close()

   Catch ex As Exception

       MessageBox.Show(ex.Message)

   End Try

End Sub

 

 

C#:

 

private void button2_Click(object sender, EventArgs e)

{

   try

   {

       strSQL = "INSERT INTO Persons (FLName, Photo) VALUES (@FLName, @Photo)";

       MemoryStream ms = new MemoryStream();

       pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);

       byte[] arrPic = ms.GetBuffer();

       ms.Close();

       con.Open();

       com = new SqlCommand(strSQL, con);

       com.Parameters.Add("@FLName", SqlDbType.NVarChar, 50).Value = textBox1.Text;

       com.Parameters.Add("@Photo", SqlDbType.VarBinary).Value = arrPic;

       com.ExecuteNonQuery();

       con.Close();

   }

   catch (SystemException ex)

   {

       MessageBox.Show(ex.Message);

   }

}

 

 

فکر مي کنم فقط اين متد است که کمي نياز به توضيح دارد: همان گونه که گفته شد، تصاوير به صورت آرايه و جرياني از بايت ها در بانک اطلات ذخيره مي شود. بنا بر اين ابتدا يک MemomryStream ايجاد مي کنيم؛ سپس با استفاده از متد Save، تصوير PictureBox1 را در آن ذخيره مي کنيم؛ آنگاه يک آرايه از نوع بايت اعلان کرده و آن را با استفاده از همان  MemomryStream مقداردهي مي کنيم. بقيه کد کاملا واضح است (فرض مي کنم که شما با برنامه نويسي بانک اطلاعات آشنايي داريد).

اکنون مي‌توانيد پروژه را امتحان کرده و در جعبه متن نام و نام خانوادگي شخص را نوشته، تصوير دلخواه را انتخاب کرده و دکمة ذخيره را کليک کنيد تا داده‌ها در بانک اطلاعات ذخيره شود.

 ۱۱.       يک متد هم براي پر کردن ليست (در GroupBox دوم) لازم داريم:

VB:

 

Private Sub PapulateListBox()

   Try

       strSQL = "SELECT * FROM Persons"

       da = New SqlDataAdapter(strSQL, con)

       ds = New DataSet

       con.Open()

       da.Fill(ds, "Persons")

       con.Close()

       Me.ListBox1.DataSource = ds.Tables("Persons")

       Me.ListBox1.DisplayMember = "FLName"

       Me.ListBox1.ValueMember = "PersonID"

   Catch ex As Exception

       MessageBox.Show(ex.Message)

   End Try

End Sub

 

 

C#:

 

private void papulateListBox()

{

    try

    {

        strSQL = "SELECT * FROM Persons";

        da = new SqlDataAdapter(strSQL, con);

        ds = new DataSet();

        con.Open();

        da.Fill(ds, "Persons");

        con.Close();

        listBox1.DataSource = ds.Tables["Persons"];

        listBox1.DisplayMember = "FLName";

        listBox1.ValueMember = " PersonID";

    }

    catch (SystemException ex)

    {

        MessageBox.Show(ex.Message);

    }

}

 

 

نام اين متد را در متدِ Load فرم کپي کنيد تا هنگام بارگزاري صفحه، اين ليست پر شود.

۱۲.  هر گاه کاربر يکي از آيتم‌هاي اين ليست را کليک مي‌کند، بايد تصوير مربوط به آن شخص در PictureBox دوم نشان داده شود (خواندن از بانک اطلاعات)؛ بنا بر اين متد ذيل را بنويسيد:

VB:

 

Private Sub ListBox1_Click(ByVal sender As Object, ByVal e As _

System.EventArgs) Handles ListBox1.Click

   Try

      strSQL = "SELECT * FROM Persons WHERE PersonID = @PersonID"

      da = New SqlDataAdapter(strSQL, con)

      da.SelectCommand.Parameters.Add("@PersonID", SqlDbType.Int).Value = _

         CInt(Me.ListBox1.SelectedValue)

      ds = New DataSet

      con.Open()

      da.Fill(ds, "Persons")

      con.Close()

      Dim arrPic() As Byte = CType(ds.Tables("Persons") _

         .Rows(0).Item("Photo"), Byte())

      Dim ms As New MemoryStream(arrPic)

      Me.PictureBox2.Image = Image.FromStream(ms)

   Catch ex As Exception

       MessageBox.Show(ex.Message)

   End Try

End Sub

 

 

C#:

 

private void listBox1_Click(object sender, EventArgs e)

{

   try

   {

      strSQL = "SELECT * FROM Persons WHERE PersonID = @PersonID";

      da = new SqlDataAdapter(strSQL, con);

      da.SelectCommand.Parameters.Add("@PersonID",

         SqlDbType.Int).Value = listBox1.SelectedValue;

      ds = new DataSet();

      con.Open();

      da.Fill(ds, "Persons");

      con.Close();

      byte[] arrPic = (byte[])(ds.Tables["Persons"].Rows[0]["Photo"]);

      MemoryStream ms = new MemoryStream(arrPic);

      pictureBox2.Image = Image.FromStream(ms);

   }

   catch (SystemException ex)

   {

        MessageBox.Show(ex.Message);

   }

}

 

 

اکنون مي‌توانيد برنامه را به طور کامل امتحان کنيد:

در پايان اين مقاله بد نيست به نحوة انقياد کنترل ها به يک فيلد تصويري اشاره اي داشته باشم:

اگر شما از کنترل‌هاي مقيد به داده (کنترل هايي که به صورت دوطرفه مقيد هستند)، استفاده مي‌کنيد، خود ويژوال استوديو تبديلات لازم را انجام مي‌دهد. در غير اين صورت، شما بايد اين کار را انجام دهيد.

نحوة انقيادِ يک PictureBox با استفاده از يک فيلد جدول همانند ذيل است:

VB:

 

Me.PhotoPictureBox.DataBindings.Add(New _

   System.Windows.Forms.Binding("Image", ds, "Customers.Photo", True))

 

 

C#:

 

this.photoPictureBox.DataBindings.Add(new

  System.Windows.Forms.Binding("Image", ds, " Customers.Photo", true));

 

 

و نحوة انقياد با استفاده از يک کنترل BindingSource همانند ذيل مي‌تواند باشد:

VB:

 

Me.PhotoPictureBox.DataBindings.Add(New _

  System.Windows.Forms.Binding("Image", Me.CustomersBindingSource, "Photo", True))

 

 

C#:

 

this.photoPictureBox.DataBindings.Add(new

  System.Windows.Forms.Binding("Image", this.customersBindingSource, "Photo", true));

 

 

 

 

+ نوشته شده در  سه شنبه شانزدهم بهمن 1386ساعت 9:30  توسط من  | 

پايگاه داده چند رسانه اي

پايگاه داده چند رسانه اي

                                                                                                      

رئوس مطالب

        مقدمه

        مديريت اطلاعات مالتيمديا در پايگاه داده:

        نکات مورد توجه براي ذخيره سازي داده ها

        معماري سيستم

        Continuous-Media Data

        ماهيت دادههاي مالتيمديا

        فرمت دادههاي مالتيمديا

        پردازش Queryها

 

 

 

مقدمه

        استفاده از متن براي نگهداري داده ها

        دادههاي مالتيمديا

        به مجوعه متن، گرافيک و صدا براي نمايش اطلاعات

        هدف :ايجاد يک چهارچوب کلي براي درخواست، جمع آوري و ذخيره دادههايي مانند صوت و تصوير و عکس

 

مديريت اطلاعات مالتيمديا در پايگاه داده:

        عکس و ويژگيهاي آن : به صورت مجموعهاي از تاپلها

        ذخيره در پايگاه داده رابطهاي

        مشکلات:

                            فهرستسازي

                            بهينه سازي Query

                            مديريت بافرها

                            کنترل همزماني

                            مسائل امنيتي

                           ترميم دادهها

مديريت اطلاعات مالتيمديا در پايگاه داده:

        تبدیل دادههاي مالتيمديا به صورت رابطه

        نوع خاصي از Queryها و اعمال را به صورت کارآمد

         Queryهايي مانند "تمام تصاويري را بيابيد که در آنها شخصي در حال مطالعه است"

 

مديريت اطلاعات مالتيمديا در پايگاه داده:

        ذخیره داده ها به صورت فايل

        ذخیره اطلاعات مربوط به آنها در پایگاه داده  

                            حجم داده

                            مشخصات ايجادکننده آن

                            نوع داده

                            مکان دادهها در روي ديسک

        مزيت

                            حجم کمتر در پايگاه

 

مشکلات

                            از دست دادن امکانات پایگاه داده

                            مشکلات عدم فهرست سازی

                            ممکن است در حالي که مشخصات يک داده در داخل پايگاه وجود داشته باشد خود آن داده چون در بيرون از پايگاه ذخيره شده پاک شود و DBMS نمي تواند کنترلي روي اين موارد داشته باشد.

نکات مورد توجه براي ذخيره سازي داده ها

        پايگاه دادهاي بايد انتخاب شود که بتواند Large object ها را پشتيباني کند زيرا دادههاي  مالتيمديا حجم زيادي  را اشغال ميکنند.

        روشها:

                            قسمتبندي داده ها وذخیره جداگانه هر قسمت

                            ذخیره داده ها در خارج از پایگاه داده

                            اشاره گر به فایل حاوی اطلاعات در داخل پایگاه داده

                            استاندارد SQL/MED با دادههاي خارجي به گونهاي رفتار ميکند که گويي جزئي از پايگاه داده هستند

نکات مورد توجه براي ذخيره سازي داده ها

        بازيابي دادهها از نوع audio و video با سرعت يکنواخت

        Continuous-media-data

       بازيابي دادههاي مشابه: منظور از اين اصطلاح اين است که در اين گونه پايگاه دادهها ما احتياج داريم که دادههايي که مشابه يک نوع خاص هستند را استخراج کنيم ممکن است دادههايي که استخراج ميشود کاملاً مشابه مورد درخواست شده نباشد اما به هر حال پايگاه داده بايد بتواند آنها را تشخيص داده و استخراج کند

بازيابي داده ها

        بازيابي ديتاها در سيکلهاي زماني مشخص

         بازيابي و نگهداري ميزان مشخصي از داده براي هر کاربر در هر سيکل در بافر حافظه

        ارسال ديتاهاي ذخيره شده در بافرها براي کاربران در سيکل بعد

        دوره کوتاه: حرکت بيشتر هد ديسک، اتلاف منابع

        دروه زماني بزرگتر: حافظه بيشتر، زمان پاسخ اوليه طولاني، کاهش تعداد حرکات هد ديسک

معماري سيستم

                      ديتاهاي مالتيمديا روي چندين ديسک ذخيره ميشوند معمولا در سيستمهايي که حجم دادههاي آنها بسيار بالا است ممکن است از حافظه سومي براي ذخيره دادههايي که دفعات کمتري درخواست ميشوند استفاده کند.

                      افراد دادههاي مالتيمديا را با استفاده از وسائل مختلفي مشاهد مي کنند که به مجموعه آنها ترمينال گفته ميشود.

                      انتقال ديتاهاي مالتيمديا از يک سرور به چندين ترمينال احتياج به يک شبکه با ظرفيت بالا دارد.

انواع داده ها ذخيره شده در پايگاه داده

        ديتاهاي مصور:

                             يک کاربر ممکن است تفاوت دو عکس شبيه به هم را نتواند به راحتي تشخيص دهد. به عنوان مثال در يک پايگاه داده که علائم تجاري ذخيره ميشود زماني که ما بخواهيم يک علامت تجاري جديد را در پايگاه ثبت کنيم. بايد سيستم بتواند تمام علائم تجاري مشابه با آن را که قبلاً ثبت شده است استخراج کند تا کاربر بتواند آنها را با هم مقايسه کند.

انواع داده ها ذخيره شده در پايگاه داده

                       ديتاهاي صوتي:

                                             امروزه فرمان دادن به کامپيوتر به طور گستردهاي مورد توجه قرار گرفته است. در اين روش کاربر با صحبت کردن با سيستم فرامين لازم را به سيستم ميگويد و سيستم بايد دادههاي صوتي ورودي را دريافت و  با دستورات مشابهي که در پايگاه داده ذخيره شده مقايسه کند و نوع دستور را تشخيص و دستورات صادره را اجرا کند.

                       دادههاي دستنويس شده:

                                             ورودي سيستم ممکن است به صورت دستنويس باشد که اين ورودي ممکن است براي مقايسه با ساير دادههاي ذخيره شده به سيستم داده شود و يا به عنوان يک دستور به سيستم. به هر حال سيستم بايد بتواند اين نوع دادهها را تشخيص دهد که در اينجا باز هم مساله تست تشابه پيش ميآيد

Continuous-Media Data

                      دادههاي صوتي و تصويري:

                                           سرعت بازيابي اين نوع دادهها بايد به اندازه کافي سريع باشد به گونهاي که بين قسمتهاي متوالي فاصلهاي ايجاد نشود.

                                           سرعت بازيابي بايد آنقدر سريع نباشد که بافري که براي آن در نظر گرفته شده سرريز کند و در نتيجه دادهها از دست برود

                                           سرعت بازيابي صوت و تصوير بايد هماهنگ باشد.  زيرا  اگر به عنوان مثال و صدا وتصوير يک فيلم را در پايگاه جداگانه ذخيره کنيم اگر اين هماهنگي در زمان بازيابي رعايت نشود صدا و تصوير پخش شده هماهنگ نخواهد بود

ماهيت دادههاي مالتيمديا:

       متفاوت از دادههاي متني استاندارد

                            نحوه نمايش، مفاهيم

        حجم زياد

        وابسته به زمان

         احتياج به پردازش زياد

مدل کردن دادههاي مالتيمديا:

        اطلاعاتي مورد نيازدر مدلسازي دادههاي مالتيمديا :

                            جزئيات ساختار اشياء مختلف.

                            عملگرهايي که با توجه به ساختار هر شيئ براي آن شيئ تعريف ميشود.

                            ويژگيهاي هر کدام از اشياء.

                            ارتباط بين اشياء مالتيمديا و اشياء موجود در جهان واقعي.

                            بخشهاي مختلف اشياء مالتيمديا با نمايش ارتباط آنها با اشياء موجود در جهان واقعي و روشهايي که براي انجام اين کار وجود دارد.

                            ويژگيها، روابط و عملگرهاي موجود در مورد اشياء واقعي.

مدل کردن دادههاي مالتيمديا:

        مدل کردن داده های مالتی مدیا:

                            استاندارد MPEG-7

                                             تفسير محتواي دادههاي مالتيمديا

                            استاندارد MPEG-4

                                             تجزيه و تحليل ساختيافته اشياء مالتيمديا

 

فرمت دادههاي مالتيمديا:

        عکسها فرمت JPEG

        فيلمها: ذخيره سازي هر فريم با فرمت JPEG

                            تشابه زياد فريم هاي متوالي

        فيلم و صدا : فرمت MPEG : فشرده سازی به دلیل تشابه زیاد

        کاهش سايز فيلمها با استفاده از فرمت

                            MPEG-1  مانند کيفيت VHS

 

پردازش Queryها:

         Query ممکن است حاوي يک داده مالتيمديا باشد که توسط کاربر به عنوان ورودي به آن داده شده است.

         خروجي نيز ممکن است کاملاً شبيه چيزي نباشد که کاربر به عنوان ورودي درخواست کرده است بلکه يک حدي از تشابه را که دارا باشد کافي است.

 

پردازش Queryها:

        اگر کاربر با کليک کردن روي يک semcon مثلا s تقاضاي جستجوي پايگاه را براي يافتن آن شيئ داشته باشد آنگاه سيستم ابتدا صفات اين شيئ را بررسي کرده، سعي در يافتن اشيائي ميکند که اين صفات را داشته باشند. همچنين اشياء ديگري را که شامل semconي شبيه s هستند و نيز اشيائي را که با آنها در ارتباط هستند جستجو ميکند

پردازش Queryها:

        خروجي Queryهايي که در پايگاه دادههاي متعارف به کار ميرود مجموعه اطلاعاتي است که صددرصد منطبق با ورودي هستند. اما در پايگاه دادههاي مالتيمديا وضع فرق ميکند

        مثال:

                            تمام عکسهايي را بيابيد که علي در آن حضور دارد( عکس علي به عنوان ورودي داده ميشود )

                            عکس تمام محکوميني که شبيه اين( ورودي) هستند را بيابيد

 

پردازش Queryها:

        براي نشان داده ميزان تشابه دو شيئ به هم از اعداد حقيقي بين صفر تا يک استفاده ميکنيم:

                             صفر نشان دهند تفاوت کامل دو شيئ

                            يک نشان دهنده تشابه کامل اين دو شيئ است

        از نظر تئوري براي پاسخ به دو Query گفته شده در اسلاید قبل بايد تمام اشياء موجود در پايگاه را از نظر تشابه با عکس درخواستي طبقهبندي کرد و آنها را نمايش داد

پردازش Queryها:

       انتخاب حد آستانه براي تشابه:

                           اگر براي يک شيئ عدد بدست آمده ا زحد آستانه کمتر بود آن شيئ بازيابي نميشود.

                          با فيلتر کردن اشياء که ميزان تشابه آنها کمتر از حد آستانه است آنها را حذف ميکنيم. سپس اشياء باقيمانده را به ترتيب ميزان تشابه آنها به عنوان خروجي باز ميگردانيم.

پردازش Queryها:

       استفاده از فهرستسازي براي تسريع عمل تعيين ميزان تشابه

       در نظر گرفتن تعداد دلخواه مثلاً n از ويژگيهاي اشياء و نمايش به عنوان يک نقطه در فضاي n بعدي

        يک روش که بتواند نزديکترين نقطهاي را که داراي ويژگيهاي خاصي است پيدا کند را ميتوان به عنوان راهحلي براي ساختن فهرست در نظر گرفت که ميتواند تست تشابه را نيز به خوبي انجام دهد.

         اين n ويژگي ممکن است مستقل از هم باشند و يا از يک ويژگي سراسري مرکب مشتق شده باشند.

 

پايگاه دادههاي تجاري که دادههاي مالتي مديا را پشتيباني ميکنند:

        CA-Jasmine

        DB2 Universal Database

        ODB II

        Oracle

        Sybase

        UniSQL

منابع و مراجع:

   [1] Horea Todoran, “Smelling Objects for Multimedia Database Application” departemant of management of european instituation,babes-bolyai university,studies in informatics and control Vol. 14, No.4, December 2005

   [2] Daniel Pletinckx, Neil Silberman, Drik Callebaut, “Heritage presentation through interactive storytelling: a new multimedia database approach” The Journal of Visualization and Computer Animation Volume 14, Issue 4, Date: September 2003, Pages: 225-231


   [3] Harald Kosch, “Distributed Multimedia Database Technologies supported by MPEG-7 und MPEG-21” , CRC Press. 248 pages. November 2003. ISBN: 0-849-31854-8.

[4] Arjen P. de Vries, “Content independence in multimedia databases
Journal of the American Society for Information Science and Technology Volume 52, Issue 11, Date: 2001, Pages: 954-960

 
[5] Ulrich Marder, “VirtualMedia: Making Multimedia Database Systems Fit for World-wide Access” , University of Kaiserslautern Dept. of Computer Science ,2001

   [6] Grosky, “W. ManagingMultimedia Information in Database Systems”. COMMUNICATIONS OF THE ACM. December 1997.

 

 

+ نوشته شده در  سه شنبه شانزدهم بهمن 1386ساعت 9:26  توسط من  | 

این هم علمی ترین مطلب وبلاگ من بعد از مدتها اندیشه وتامل....

آخرين کلمات يک .....

آخرين کلمات يک الکتريسين: خوب حالا روشنش کن...
آخرين کلمات يک انسان عصر حجر: فکر ميکنی توی اين غار چيه؟
آخرين کلمات يک بندباز: نميدونم چرا چشمام سياهی ميره...
آخرين کلمات يک بيمار: مطمئنيد که اين آمپول بيخطره؟
آخرين کلمات يک پزشک : راستش تشخيص اوليه‌ام صحيح نبود. بيماريتون لاعلاجه...
آخرين کلمات يک پليس: شيش بار شليک کرده، ديگه گلوله نداره...
آخرين کلمات يک پيشخدمت رستوران: باب ميلتون بود؟
آخرين کلمات يک جلاد: ای بابا، باز تيغهء گيوتين گير کرد...
آخرين کلمات يک جهانگرد در آمازون: اين نوع مار رو ميشناسم، سمی نيست...
آخرين کلمات يک چترباز: پس چترم کو؟
آخرين کلمات يک خبرنگار: بله، سيل داره به طرفمون مياد...
آخرين کلمات يک خلبان: ببينم چرخها باز شدند يا نه؟
آخرين کلمات يک خون‌آشام: نه بابا خورشيد يه ساعت ديگه طلوع ميکنه!
آخرين کلمات يک داور فوتبال: نخير آفسايد نبود!
آخرين کلمات يک دربان: مگه از روی نعش من رد بشی...
آخرين کلمات يک دوچرخه‌سوار: نخير تقدم با منه!
آخرين کلمات يک ديوانه: من يه پرنده‌ام!
آخرين کلمات يک سرنشين اتوموبيل: برو سمت راست راه بازه...
آخرين کلمات يک شکارچی: مامانت کجاست کوچولو؟.
آخرين کلمات يک غواص: نه اين طرفها کوسه وجود نداره...
آخرين کلمات يک فضانورد: برای يک ربع ديگه هوا دارم...
آخرين کلمات يک قصاب: اون چاقو بزرگه رو بنداز ببينم...
آخرين کلمات يک قهرمان: کمک نميخوام، همه‌اش سه نفرند...
آخرين کلمات يک قهرمان اتوموبيلرانی : پس مکانيکه ميدونه که با ...
آخرين کلمات يک کارآگاه خصوصی: قضيه روشنه، قاتل شما هستيد!
آخرين کلمات يک کامپيوتر: هاردديسک پاک شده است...
آخرين کلمات يک کوهنورد: سر طناب رو محکم بگيری ها...
آخرين کلمات يک گروگان: من که ميدونم تو عرضهء شليک کردن نداری...
آخرين کلمات يک گيتاريست: يه خرده ولوم بده...
آخرين کلمات يک مادر: بالأخره سی‌دی‌هات رو مرتب کردم...
آخرين کلمات يک متخصص آزمايشگاه: اين آزمايش کاملاً بيخطره...
آخرين کلمات يک متخصص خنثی کردن بمب : اين سيم آخری رو که قطع کنم تمومه...
آخرين کلمات يک متخصص کامپيوتر: معلومه که ازش بک‌آپ گرفتم!
آخرين کلمات يک معلم رانندگی: نگه دار! چراغ قرمزه!
آخرين کلمات يک ملوان: من چه ميدونستم که بايد شنا بلد باشم؟
آخرين کلمات يک ملوان زيردريايی: من عادت ندارم با پنجرهء بسته بخوابم...
آخرين کلمات يک نارنجک‌انداز : گفتی تا چند بشمرم؟

+ نوشته شده در  شنبه سیزدهم بهمن 1386ساعت 14:1  توسط من  |