Skip to content

3. المرفقات

3.1. إنشاء مشروع ويب باستخدام Visual Studio.net على XP العائلي

يتيح Visual Studio.net إنشاء أنواع مختلفة من المشاريع:

Image

لإنشاء مشروع تطبيق ويب، عادةً ما يتم اختيار النوع [Application Web ASP.NET]. يتطلب هذا النوع من المشاريع وجود خادم ويب IIS محلي أو بعيد. إذا كنا نعمل على جهاز يعمل بنظام Windows XP، فإن هذا الخادم غير موجود ولا يمكن تثبيته. وبالتالي، لا يمكن إنشاء مشروع من النوع [Application Web ASP.NET].

يمكن التغلب على هذه العقبة بتقبل بعض المضايقات الطفيفة. يكفي:

  • استخدام خادم الويب Cassini بدلاً من الخادم IIS. وهو متاح مجانًا على موقع Microsoft.
  • استخدام مشروع [Bibliothèque de classes] بدلاً من المشروع [Application Web ASP.NET]

لننشئ مشروعًا بسيطًا يوضح كيفية القيام بذلك.

  • إنشاء مشروع [Bibliothèque de classes]
  • حذف [Class1.vb]

Image

  • إضافة عنصر جديد إلى المشروع، من النوع [Fichier texte] وتسميته [demo.aspx]:
  • يتم التعرف على الملف [demo.aspx] كصفحة ويب ويتم ربط محرر صفحات به. يحتوي هذا المحرر على لوحتين:
  • [design] لإنشاء الصفحة بشكل رسومي
  • [HTML] للوصول إلى كود الصفحة HTML

Image

  • انقر على [Affichage/Code] لعرض جزء الكود VB الخاص بالصفحة. لا يحدث شيء. لا يمكن الوصول إلى كود الصفحة VB.
  • انتقل إلى اللوحة [HTML] وأدخل الكود الذي سيربط الصفحة [demo.aspx] بالكود [demo.aspx.vb]:

Image

  • اطلب عرض رمز التحقق المرتبط بالصفحة بواسطة [Affichage code - F7]. يتم الحصول على الملف [demo.aspx.vb]:

Image

  • أصبحت الصفحة [demo.aspx] معترفًا بها الآن كصفحة ويب [.aspx] مع رمز [.aspx.vb] مرتبط بها.
  • لنعد إلى لوحة [Design] الخاصة بـ [demo.aspx] ونرسم الصفحة التالية:

Image

تحتوي الصفحة على نص ومكون خادم من النوع [Label] بمعرف [lblHeure].

  • لننتقل إلى اللوحة [HTML]. نجد فيها الكود التالي:
<%@ Page codebehind="demo.aspx.vb" inherits="demo.demo" autoeventwireup="false" Language="vb" %>
Démo ASPX, il est
<asp:Label id="lblHeure" runat="server"></asp:Label>

هذا الرمز غير مكتمل من حيث قواعد بناء الجملة HTML. دعونا نكمله:

<%@ Page codebehind="demo.aspx.vb" inherits="demo.demo" autoeventwireup="false" Language="vb" %>
<html>
    <head>
        <title>démo ASPX</title></head>
    <body>
        Démo ASPX, il est
        <asp:Label id="lblHeure" runat="server"></asp:Label>
    </body>
</html>
  • لننتقل إلى الكود [demo.aspx.vb] لكتابة كود التحكم الذي سيضع الوقت في المكون [lblHeure]. نلاحظ أن هذا الكود غير معترف به من قبل Intellisense، أداة المساعدة في كتابة الكود.
  • أغلق [demo.aspx] و [demo.aspx.vb] بعد حفظهما مسبقًا، ثم أعد فتحهما. انتقل إلى الكود [demo.aspx.vb]. هذه المرة، يتم التعرف على المكون [lblHeure] التابع لـ [demo.aspx] بشكل صحيح بواسطة Intellisense في الكود [demo.aspx.vb]. أكمل الكود:

Image

  • قم بإنشاء المشروع باستخدام [Générer/Générer demo]. إذا تم الإنشاء بنجاح، فسيتم إنشاء DLL في مجلد [bin] الخاص بالمشروع:

Image

  • نحن جاهزون لإجراء الاختبارات. نقوم بتكوين خادم Cassini (انظر الفقرة التالية) بالطريقة التالية:

Image

يتم تعريف وجهة الاختصار المؤدي إلى Cassini على النحو التالي:

"E:\Program Files\Microsoft ASP.NET Web Matrix\v0.6.812\WebServer.exe" /path:"D:\temp\07-04-05\demo" /vpath:"/demo"
E:\..\WebServer.exe
مسار الملف القابل للتنفيذ
D:\temp\07-04-05\demo
مسار مجلد مشروع الويب في Visual Studio
/demo
المسار الافتراضي المرتبط
  • قم بتشغيل Cassini. ستظهر أيقونته في شريط المهام. انقر بزر الماوس الأيمن فوقها واختر الخيار [Show details] للتحقق من صحة تكوين خادم الويب:

Image

  • باستخدام متصفح، اطلب الصفحة التي أنشأناها، عن طريق طلب URL [http://localhost/demo/demo.aspx]. نحصل على النتيجة التالية:

Image

لقد نجحنا في إنشاء تطبيق ويب باستخدام Visual Studio من خلال:

  • مشروع من النوع [bibliothèque de classes]
  • خادم الويب Cassini

أصبحنا الآن قادرين على إنشاء تطبيقات ويب على أجهزة لا تحتوي على خادم IIS، كما هو الحال مع أجهزة ويندوز XP، الإصدار العائلي.

3.2. أين يمكن العثور على خادم الويب Cassini ؟

للعمل مع منصة .NET من Microsoft، يمكن استخدام خادم الويب Cassini. وهو متاح عبر منتج يُسمى [WebMatrix]، وهو بيئة مجانية لتطوير الويب على منصات .NET متاحة على URL:

Image

سنقوم بمتابعة خطوات تثبيت المنتج بعناية:

  • تنزيل وتثبيت منصة .NET (الإصدار 1.1 في مارس 2004)
  • تنزيل وتثبيت WebMatrix
  • تنزيل وتثبيت MSDE (Microsoft Data Engine) وهو إصدار محدود من SQL Server.

بمجرد انتهاء التثبيت، سيصبح المنتج [WebMatrix] متاحًا ضمن البرامج المثبتة:

Image

يؤدي الرابط [ASP.NET] Web Matrix إلى تشغيل IDE للتطوير ASP.NET:

Image

الرابط [Class Browser] يطلق أداة استكشاف الفئات .NET:

Image

لاختبار التثبيت، دعونا نشغل [WebMatrix]:

عند التشغيل الأولي، يطلب [WebMatrix] تحديد خصائص projet.C الجديد، وهو الإعداد الافتراضي. يمكن تهيئته بحيث لا يظهر مربع الحوار هذا عند التشغيل. ويمكن تحقيق ذلك من خلال الخيار [File/New File]. يتيح [WebMatrix] إنشاء هياكل أساسية لمختلف تطبيقات الويب. أعلاه، حددنا في (1) أننا نريد إنشاء تطبيق [ASP.ET Page] وهو عبارة عن صفحة ويب. وفي (2)، نحدد المجلد الذي سيتم وضع صفحة الويب هذه فيه. في (3) نحدد اسم الصفحة. يجب أن تنتهي بامتداد .aspx. وأخيرًا في (4)، نحدد أننا نريد العمل بلغة VB.NET، حيث تدعم [WebMatrix] أيضًا لغتي C# وJ#. وبعد ذلك، يعرض [WebMatrix] صفحة لتحرير الملف [demo1.aspx]. نضع فيها الكود التالي:

Image

  • تتيح علامة التبويب [Design] «تصميم» صفحة الويب التي نريد إنشاءها. ويتم ذلك بنفس الطريقة المتبعة في IDE لإنشاء تطبيقات Windows.
  • سيؤدي التصميم الجرافيكي لصفحة الويب في [Design] إلى إنشاء كود HTML في علامة التبويب [HTML]
  • قد تحتوي صفحة الويب على عناصر تحكم تولد أحداثًا يجب الاستجابة لها، مثل زر على سبيل المثال. سيتم إدارة هذه الأحداث بواسطة كود VB.NET الذي سيتم وضعه في علامة التبويب [Code]
  • في النهاية، الملف demo1.aspx هو ملف نصي يجمع بين كود HTML وكود VB.NET، وهو نتيجة التصميم الجرافيكي الذي تم إجراؤه في [Design]، والرمز HTML الذي تمت إضافته يدويًّا في ملف [HTML]، والرمز VB.NET الموجود في ملف [Code]. الملف بأكمله متاح في علامة التبويب [All].
  • يمكن لمطور ASP.ET ذي الخبرة إنشاء الملف demo1.aspx مباشرةً باستخدام محرر نصوص دون الحاجة إلى أي IDE.

لنختر الخيار [All]. نلاحظ أن [WebMatrix] قد أنشأ بالفعل كودًا:

<%@ Page Language="VB" %>
<script runat="server">

     ' أدخل رمز الصفحة هنا
    '

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
         <!-- أدخل المحتوى هنا -->
    </form>
</body>
</html>

لن نحاول هنا شرح هذا الرمز. سنقوم بتحويله على النحو التالي:

<html>
<head>
    <title>Démo asp.net </title>
</head>
<body>
    Il est <% =Date.Now.ToString("hh:mm:ss") %>
</body>
</html>

الرمز أعلاه هو مزيج من HTML ورمز VB.NET. وقد تم وضعه بين العلامتين <% ... %>. لتنفيذ هذا الرمز، نستخدم الخيار [View/Start]. يقوم [WebMatrix] عندئذٍ بتشغيل خادم الويب Cassini إذا لم يكن قيد التشغيل بالفعل

Image

يمكننا قبول القيم الافتراضية المقترحة في مربع الحوار هذا واختيار الخيار [Start]. يصبح خادم الويب نشطًا عندئذٍ. سيقوم [WebMatrix] بعد ذلك بتشغيل المتصفح الافتراضي للجهاز الذي يعمل عليه وطلب URL http://localhost:8080/demo1.aspx:

Image

يمكن استخدام خادم Cassini خارج [WebMatrix]. يوجد الملف القابل للتنفيذ الخاص بالخادم في <WebMatrix>\<version>\WebServer.exe حيث <WebMatrix> هو مجلد تثبيت [WebMatrix] و<version> هو رقم إصداره:

Image

لنفتح نافذة DOS وننتقل إلى مجلد خادم Cassini:

E:\Program Files\Microsoft ASP.NET Web Matrix\v0.6.812>dir
...
29/05/2003  11:00               53 248 WebServer.exe
...

دعونا نُشغّل [WebServer.exe] بدون معلمات:

E:\Program Files\Microsoft ASP.NET Web Matrix\v0.6.812>webserver

تظهر لنا نافذة المساعدة:

Image

تقبل تطبيق [WebServer]، المعروف أيضًا باسم خادم الويب Cassini، ثلاث معلمات:

  • /port: رقم منفذ خدمة الويب. يمكن أن يكون أي رقم. القيمة الافتراضية هي 80
  • /path: المسار الفعلي لمجلد على القرص
  • /vpath: المجلد الافتراضي المرتبط بالمجلد الفعلي السابق. يجب الانتباه إلى أن الصيغة ليست /path=المسار بل /vpath:المسار، على عكس ما يذكره المثال [Example] في لوحة المساعدة أعلاه.

لنضع الملف [demo1.aspx] في المجلد التالي:

Image

لنربط المجلد الفعلي [d:\data\devel\webmatrix] بالمجلد الافتراضي [/webmatrix]. يمكن تشغيل خادم الويب بالطريقة التالية:

E:\Program Files\Microsoft ASP.NET Web Matrix\v0.6.812>webserver /port:100 /path:"d:\data\devel\webmatrix" /vpath:"/webmatrix"

يصبح خادم Cassini نشطًا عندئذٍ وتظهر أيقونته في شريط المهام. إذا نقرنا عليها نقرًا مزدوجًا:

Image

تظهر إعدادات تشغيل الخادم. كما تتوفر إمكانية إيقاف [Stop] أو إعادة تشغيل خادم الويب [Restart]. إذا نقرنا على الرابط [Root URL]، فسنحصل على الجذر لشجرة الويب الخاصة بالخادم في متصفح:

Image

دعونا نتبع الرابط [demos]:

Image

ثم الرابط [demo1.aspx]:

Image

نرى إذن أنه إذا تم ربط المجلد الفعلي P=[d:\data\devel\webmatrix] بالمجلد الافتراضي V=[/webmatrix] وكان الخادم يعمل على المنفذ 100، فإن صفحة الويب [demo1.aspx] الموجودة فعليًا في [P\demos] ستكون متاحة محليًّا عبر URL و[http://localhost:100/V/demos/demo1.aspx].

ولكي لا نضطر إلى المرور عبر نافذة DOS لتشغيل خادم Cassini، يمكن إنشاء اختصار إلى الملف القابل للتنفيذ الخاص بالخادم بخصائص مشابهة لما يلي:

Image

Cible
"C:\Program Files\Microsoft ASP.NET Web Matrix\v0.6.812\WebServer.exe" /port:80 /path:"D:\data\serge\travail\2004-2005\aspnet\webarticles-010405\version3\web" /vpath:"/webarticles"
Démarrer dans
"C:\Program Files\Microsoft ASP.NET Web Matrix\v0.6.812"

3.3. أين يمكن العثور على Spring؟

الموقع الرئيسي لـ Spring هو [http://www.springframework.org/]. هذا هو موقع إصدار Java. أما الإصدار .NET قيد التطوير (أبريل 2005) فيوجد على الرابط [http://www.springframework.net/].

Image

موقع التنزيل موجود على الرابط [SourceForge]:

Image

بمجرد تنزيل ملف zip أعلاه، قم بفك ضغطه:

Image

في هذا المستند، لم نستخدم سوى محتويات المجلد [bin]:

Image

في أي مشروع Visual Studio يستخدم Spring، يجب القيام بأمرين بشكل منهجي:

  • وضع الملفات المذكورة أعلاه في مجلد [bin] الخاص بالمشروع
  • إضافة مرجع إلى التجميع [Spring.Core.dll] إلى المشروع

3.4. أين يمكن العثور على Nunit؟

الموقع الرئيسي لـ Nunit هو [http://www.nunit.org/]. الإصدار المتوفر في أبريل 2005 هو 2.2.0:

Image

قم بتنزيل هذه النسخة وتثبيتها. يؤدي التثبيت إلى إنشاء مجلد ستجد فيه النسخة الرسومية التجريبية:

ما يثير الاهتمام موجود في المجلد [bin]:

Image

Image

يشير السهم أعلاه إلى الأداة الرسومية للاختبار. كما أضاف التثبيت عناصر جديدة إلى مستودع التجميعات في Visual Studio، والتي سنكتشفها الآن.

لنقم بإنشاء مشروع Visual Studio التالي:

Image

توجد الفئة التي يتم اختبارها في [Personne.vb]:

Public Class Personne

     ' الحقول الخاصة
    Private _nom As String
    Private _age As Integer

     ' المُنشئ الافتراضي
    Public Sub New()
    End Sub

     ' الخصائص المرتبطة بالحقول الخاصة
    Public Property nom() As String
        Get
            Return _nom
        End Get
        Set(ByVal Value As String)
            _nom = Value
        End Set
    End Property

    Public Property age() As Integer
        Get
            Return _age
        End Get
        Set(ByVal Value As Integer)
            _age = Value
        End Set
    End Property

     ' سلسلة الهوية
    Public Overrides Function tostring() As String
        Return String.Format("[{0},{1}]", nom, age)
    End Function

     ' طريقة init
    Public Sub init()
        Console.WriteLine("init personne {0}", Me.ToString)
    End Sub

     ' طريقة الإغلاق
    Public Sub close()
        Console.WriteLine("destroy personne {0}", Me.ToString)
    End Sub

End Class

توجد فئة الاختبار في [NunitTestPersonne-1.vb]:

Imports System
Imports NUnit.Framework

<TestFixture()> _
 Public Class NunitTestPersonne

     ' الكائن قيد الاختبار
    Private personne1 As Personne

    <SetUp()> _
    Public Sub init()
         ' يتم إنشاء مثيل لـ Personne
        personne1 = New Personne
         ' سجل
        Console.WriteLine("setup test")
    End Sub

    <Test()> _
    Public Sub demo()
         ' سجل الشاشة
        Console.WriteLine("début test")
         ' تهيئة personne1
        With personne1
            .nom = "paul"
            .age = 10
        End With
         ' اختبارات
        Assert.AreEqual("paul", personne1.nom)
        Assert.AreEqual(10, personne1.age)
         ' سجل الشاشة
        Console.WriteLine("fin test")
    End Sub

    <TearDown()> _
    Public Sub destroy()
         ' المتابعة
        Console.WriteLine("teardown test")
    End Sub

End Class

هناك عدة أمور يجب ملاحظتها:

  • تحتوي الطرق على سمات مثل <Setup()>، <TearDown()>، ...
  • ولكي يتم التعرف على هذه السمات، يجب أن:
    • أن يشير المشروع إلى التجميع [nunit.framework.dll]
    • أن تستورد فئة الاختبار مساحة الأسماء [NUnit.Framework]

يتم الحصول على الإشارة بالنقر بزر الماوس الأيمن على [References] في مستكشف الحلول:

Image

يجب أن يظهر التجميع [nunit.framework.dll] في القائمة المعروضة إذا تم تثبيت [Nunit] بنجاح. يكفي النقر المزدوج على التجميع لإضافته إلى المشروع:

Image

وبعد ذلك، يجب أن تستورد فئة الاختبار [NunitTestPersonne] مساحة الأسماء [NUnit.Framework]:

Imports NUnit.Framework

ثم يجب التعرف على سمات فئة الاختبار [NunitTestPersonne].

  • تشير السمة <Test()> إلى طريقة يجب اختبارها
  • تشير السمة <Setup()> إلى الطريقة التي يجب تنفيذها قبل كل طريقة يتم اختبارها
  • تشير السمة <TearDown()> إلى الطريقة التي يجب تنفيذها بعد كل طريقة يتم اختبارها
  • تسمح الطريقة Assert.AreEqual باختبار تساوي اثنين من entités.Il، وهناك العديد من الطرق الأخرى من النوع Assert.xx.
  • تقوم الأداة المساعدة NUnit بإيقاف تنفيذ الأسلوب الذي يتم اختباره فور فشل أي أسلوب من نوع [Assert] وعرض رسالة خطأ. وإلا، فإنها تعرض رسالة نجاح.

لنقم بتكوين مشروعنا بحيث يقوم بإنشاء DLL:

Image

ستُسمى طريقة DLL التي تم إنشاؤها بـ [nunit-demos-1.dll] وستُوضع افتراضيًا في مجلد [bin] الخاص بالمشروع. لنقم بإنشاء مشروعنا. نحصل في مجلد [bin] على:

Image

لنقم الآن بتشغيل أداة اختبار الرسوميات Nunit. نذكر أنها موجودة في <Nunit>\bin وأن اسمها هو [nunit-gui.exe]. يشير <Nunit> إلى مجلد تثبيت [Nunit]. نحصل على الواجهة التالية:

Image

لنستخدم خيار القائمة [File/Open] لتحميل ملفات DLL و [nunit-demos-1.dll] الخاصة بمشروعنا:

Image

يستطيع [Nunit] اكتشاف فئات الاختبار الموجودة في الملف DLL الذي تم تحميله تلقائيًا. هنا، يعثر على الفئة [NunitTestPersonne]. ثم يعرض جميع الأساليب الخاصة بالفئة التي تحتوي على السمة <Test()>. يتيح الزر [Run] تشغيل الاختبارات على الكائن المحدد. وإذا كان هذا الكائن هو الفئة [NunitTestPersonne]، فسيتم اختبار جميع الطرق المعروضة. يمكن طلب اختبار طريقة معينة عن طريق تحديدها وطلب تنفيذها بواسطة [Run]. لنطلب تنفيذ الفئة:

Image

يُرمز لاختبار ناجح على إحدى الطرق بنقطة خضراء بجانب الطريقة في النافذة اليسرى. ويُرمز للاختبار الفاشل بنقطة حمراء.

تُظهر النافذة [Console.Out] الموجودة على اليمين عروض الشاشة الناتجة عن الطرق التي تم اختبارها. هنا، أردنا متابعة سير الاختبار:

1
2
3
4
setup test
début test
fin test
teardown test
  • يُظهر السطر 1 أن طريقة السمة <Setup()> يتم تنفيذها قبل الاختبار
  • السطران 2 و3 ناتجان عن الطريقة [demo] التي تم اختبارها (انظر الكود أعلاه)
  • يُظهر السطر 4 أن طريقة السمة <TearDown()> تُنفَّذ بعد الاختبار

3.5. أين يمكن العثور على SGBD Firebird؟

الموقع الرئيسي لـ Firebird هو [http://firebird.sourceforge.net/]. توفر صفحة التنزيلات الروابط التالية (أبريل 2005):

Image

سيتم تنزيل العناصر التالية:

firebird-win32
SGBD لنظام ويندوز
firebird-net-provider
مكتبة فئات للتطبيقات .NET تتيح الوصول إلى SGBD دون الحاجة إلى برنامج تشغيل ODBC.
firebird-ODBC-driver
برنامج التشغيل ODBC الخاص بـ Firebird

قم بتثبيت هذه العناصر. يتم تثبيت SGBD في مجلد يحتوي على محتويات مشابهة لما يلي:

Image

توجد الملفات الثنائية في المجلد [bin]:

Image

fbguard.exe
يسمح بتشغيل/إيقاف SGBD
isql.exe
عميل سطري يسمح بإدارة قواعد البيانات

تجدر الإشارة إلى أن اسم مسؤول SGBD افتراضيًا هو [SYSDBA] وكلمة مروره هي [masterkey]. تم تثبيت قوائم في [Démarrer]:

Image

يتيح الخيار [Firebird Guardian] تشغيل/إيقاف SGBD. بعد التشغيل، تظل أيقونة SGBD في شريط مهام ويندوز:

لإنشاء قواعد بيانات Firebird واستخدامها باستخدام عميل سطر الأوامر [isql.exe]، من الضروري قراءة الوثائق المرفقة مع المنتج في المجلد [doc]. وهناك طريقة أسرع للعمل مع Firebird وهي استخدام عميل رسومي. ومن أمثلة هذه العملاء برنامج IB-Expert الموصوف في الفقرة التالية.

3.6. أين يمكن العثور على IB- Expert؟

الموقع الرئيسي لـ Firebird هو [http://www.ibexpert.com/]. توفر صفحة التنزيلات الروابط التالية:

Image

سنختار الإصدار المجاني [Personal Edition]. بمجرد تنزيله وتثبيته، سيكون لدينا مجلد مشابه لما يلي:

Image

الملف القابل للتنفيذ هو [ibexpert.exe]. عادةً ما يتوفر اختصار في القائمة [Démarrer]:

Image

بمجرد تشغيله، يعرض IBExpert النافذة التالية:

Image

لنستخدم الخيار [Database/Create Database] لإنشاء قاعدة بيانات:

Image

Server
قد يكون [local] أو [remote]. هنا، يقع خادمنا على نفس الجهاز الذي يعمل عليه [IBExpert]. لذا نختار [local]
Database
استخدم زر من النوع [dossier] في القائمة المنسدلة لتحديد ملف قاعدة البيانات. يقوم Firebird بتخزين قاعدة البيانات بأكملها في ملف واحد. وهذه إحدى ميزاته. يمكن نقل قاعدة البيانات من جهاز إلى آخر بمجرد نسخ الملف. ويتم إضافة اللاحقة [.gdb] تلقائيًا.
Username
SYSDBA هو المسؤول الافتراضي في الإصدارات الحالية من Firebird
Password
masterkey هي كلمة مرور المسؤول SYSDBA في إصدارات Firebird الحالية
Dialect
اللهجة SQL المطلوب استخدامها
Register Database
إذا تم تحديد المربع، فسيعرض IBExpert رابطًا إلى قاعدة البيانات التي تم إنشاؤها بعد إنشائها

إذا ظهرت لك الرسالة التالية عند النقر على زر الإنشاء [OK]:

Image

فهذا يعني أنك لم تقم بتشغيل Firebird. قم بتشغيله. ستظهر نافذة جديدة:

Image

Server version
[IBExpert] قادر على إدارة مختلف ملفات SGBD المشتقة من Interbase. حدد إصدار Firebird الذي قمت بتثبيته

Image

بمجرد تأكيد هذه النافذة الجديدة بواسطة [Register]، نحصل على النتيجة التالية:

Image

للوصول إلى قاعدة البيانات التي تم إنشاؤها، ما عليك سوى النقر مرتين على الرابط الخاص بها. عندئذٍ يعرض IBExpert شجرة تتيح الوصول إلى خصائص قاعدة البيانات:

Image

لنقم بإنشاء جدول. نضغط بزر الفأرة الأيمن على [Tables] ونختار الخيار [New Table]. تظهر لنا نافذة تعريف خصائص الجدول:

لنبدأ بتسمية الجدول [ARTICLES] باستخدام حقل الإدخال [1]:

نستخدم حقل الإدخال [2] لتعريف مفتاح أساسي [ID]:

يتم تعيين الحقل كمفتاح أساسي بالنقر المزدوج على منطقة [PK] (المفتاح الأساسي) الخاصة بالحقل. لنقم بإضافة حقول باستخدام الزر [3]:

Image

ما لم نقم بـ«تجميع» تعريفنا، لن يتم إنشاء الجدول. لنستخدم الزر [Compile] أعلاه لإنهاء تعريف الجدول. يقوم IBExpert بإعداد استعلامات SQL لإنشاء الجدول ويطلب التأكيد:

Image

ومن المثير للاهتمام أن IBExpert يعرض الاستعلامات SQL التي نفذها. وهذا يتيح التعلم في آن واحد لكل من لغة SQL وكذلك اللهجة SQL التي قد تكون خاصة بالمستخدم. يتيح الزر [Commit] تأكيد المعاملة الجارية، بينما يتيح الزر [Rollback] إلغاءها. هنا نقبلها باستخدام [Commit]. وبمجرد القيام بذلك، يقوم IBExpert بإضافة الجدول الذي تم إنشاؤه إلى شجرة قاعدة البيانات لدينا:

Image

بالنقر المزدوج على الجدول، يمكننا الوصول إلى خصائصه:

Image

تتيح لنا لوحة [Constraints] إضافة قيود تكامل جديدة إلى الجدول. لنفتحها:

Image

نجد هنا قيد المفتاح الأساسي الذي أنشأناه. يمكننا إضافة قيود أخرى:

  • مفاتيح خارجية [Foreign Keys]
  • قيود سلامة الحقول [Checks]
  • قيود تفرد الحقول [Uniques]

نشير إلى أن:

  • يجب أن تكون قيم الحقل [ID, PRIX, STOCKACTUEL, STOKMINIMUM] أكبر من 0
  • يجب أن يكون الحقل [NOM] غير فارغ وفريد

لنفتح اللوحة [Checks] ونضغط بزر الماوس الأيمن في مساحة تعريف القيود الخاصة بها لإضافة قيد جديد:

Image

لنحدد القيود المطلوبة:

Image

يُلاحظ أعلاه أن القيد [NOM<>''] يستخدم علامتي اقتباس مفردة وليس علامتي اقتباس مزدوجة. لن نقوم بتجميع هذه القيود باستخدام الزر [Compile] أعلاه:

Image

مرة أخرى، يُظهر IBExpert طابعًا تعليميًا من خلال الإشارة إلى الاستعلامات SQL التي نفذها. لننتقل الآن إلى اللوحة [Constraints/Uniques] للإشارة إلى أن الاسم يجب أن يكون فريدًا:

Image

لنحدد القيد:

Image

لنقوم بتجميعها. بعد الانتهاء من ذلك، لنفتح اللوحة [DDL] الخاصة بالجدول [ARTICLES]:

Image

يقدم هذا الرمز SQL لتوليد الجدول مع جميع قيوده. يمكن حفظ هذا الرمز في برنامج نصي لتشغيله لاحقًا:

SET SQL DIALECT 3;
SET NAMES NONE;
CREATE TABLE ARTICLES (
    ID            INTEGER NOT NULL,
    NOM           VARCHAR(20) NOT NULL,
    PRIX          DOUBLE PRECISION NOT NULL,
    STOCKACTUEL   INTEGER NOT NULL,
    STOCKMINIMUM  INTEGER NOT NULL
);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_ID check (ID>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_PRIX check (PRIX>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKACTUEL check (STOCKACTUEL>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKMINIMUM check (STOCKMINIMUM>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_NOM check (NOM<>'');
ALTER TABLE ARTICLES ADD CONSTRAINT UNQ_NOM UNIQUE (NOM);
ALTER TABLE ARTICLES ADD CONSTRAINT PK_ARTICLES PRIMARY KEY (ID);

حان الوقت الآن لإدخال البيانات في الجدول [ARTICLES]. وللقيام بذلك، سنستخدم لوحة التحكم الخاصة به [Data]:

Image

يتم إدخال البيانات بالنقر المزدوج على حقول الإدخال في كل سطر من الجدول. يتم إضافة سطر جديد باستخدام الزر [+]، وحذف سطر باستخدام الزر [-]. تتم هذه العمليات في معاملة يتم تأكيدها بواسطة الزر [Commit Transaction]. وبدون هذا التأكيد، ستُفقد البيانات.

يتيح الزر IBExpert إصدار استعلامات SQL عبر الخيار [Tools/SQL Editor] أو [F12]. وبذلك يمكن الوصول إلى محرر متقدم لطلبات SQL يمكن من خلاله تشغيل الطلبات. يتم تخزين هذه الطلبات، مما يتيح العودة إلى طلب تم تشغيله مسبقًا. وفيما يلي مثال على ذلك:

Image

نقوم بتنفيذ الاستعلام SQL باستخدام الزر [Execute] أعلاه. ونحصل على النتيجة التالية:

Image

سنوقف عروضنا التوضيحية عند هذا الحد. يثبت الثنائي IBExpert-Firebird أنه ممتاز لتعلم قواعد البيانات.

3.7. تثبيت واستخدام برنامج تشغيل ODBC لـ [Firebird]

3.8. تثبيت برنامج التشغيل

يتيح الرابط [firebird-odbc-provider] الموجود في صفحة التنزيلات الخاصة بـ [Firebird] (الفقرة 3.5) الوصول إلى برنامج التشغيل ODBC. بمجرد تثبيته، سيظهر في قائمة برامج التشغيل ODBC المثبتة.

3.9. إنشاء مصدر ODBC

  • تشغيل الأداة [Démarrer -> Paramètres -> Outil de configuration -> Outils d'administration -> Sources de données ODBC]:

Image

  • ستظهر النافذة التالية:

Image

  • نضيف [Add] كمصدر بيانات نظام جديد (لوحة [System DSN]) سنربطه بقاعدة بيانات Firebird التي أنشأناها في الفقرة السابقة:

Image

  • علينا أولاً تحديد برنامج التشغيل ODBC الذي سنستخدمه. في الأعلى، نختار برنامج التشغيل الخاص بـ Firebird ثم نقوم بـ [Terminer]. عندئذٍ يتولى مساعد برنامج التشغيل ODBC الخاص بـ Firebird زمام الأمور:

Image

  • نقوم بملء الحقول المختلفة:

Image

DSN [demo-odbc-firebird]
اسم DSN للمصدر ODBC - يمكن أن يكون أي اسم
Database [D:\..\DBARTICLES.GDB]
اسم ملف Firebird BD المراد استخدامه - استخدم [Browse] للإشارة إلى ملف .gbd المقابل
Database Account [SYSDBA]
معرف المستخدم المطلوب لتسجيل الدخول إلى قاعدة البيانات
Password [masterkey]
كلمة المرور المرتبطة بهذا المعرف

يتيح الزر [Test connection] التحقق من صحة المعلومات التي أدخلناها. قبل استخدامه، قم بتشغيل SGBD [Firebird]:

Image

  • قم بتأكيد المساعد ODBC، عن طريق تكرار [OK] عدة مرات حسب الحاجة

3.10. اختبار المصدر ODBC

هناك طرق متنوعة للتحقق من صحة عمل مصدر ODBC. سنستخدم هنا برنامج Excel:

Image

  • لنستخدم الخيار [Données -> Données externes -> Créer une requête] المذكور أعلاه. ستظهر لنا النافذة الأولى لمعالج تعريف مصدر البيانات. تعرض لوحة [Bases de données] قائمة بمصادر ODBC المُعرَّفة حاليًا على الجهاز:

Image

  • نختار مصدر ODBC [odbc-firebird-articles] الذي أنشأناه للتو وننتقل إلى الخطوة التالية باستخدام [OK]:

Image

  • تسرد هذه النافذة الجداول والأعمدة المتاحة في المصدر ODBC. نختار الجدول بأكمله:

Image

  • لننتقل إلى الخطوة التالية باستخدام [Suivant]:

Image

  • تتيح لنا هذه الخطوة تصفية البيانات. هنا، لن نقوم بأي تصفية وسننتقل إلى الخطوة التالية:

Image

  • تتيح لنا هذه الخطوة فرز البيانات. لن نقوم بذلك وسننتقل إلى الخطوة التالية:

Image

  • تسألنا الخطوة الأخيرة عما نريد أن نفعل بالبيانات. هنا، نرسلها إلى Excel:

Image

  • هنا، يسألنا Excel عن المكان الذي نريد وضع البيانات المسترجعة فيه. نضعها في الورقة النشطة بدءًا من الخلية A1. ثم يتم استرجاع البيانات في ورقة Excel:

Image

هناك طرق أخرى لاختبار صحة مصدر ODBC. يمكننا، على سبيل المثال، استخدام الحزمة المجانية OpenOffice المتوفرة على URL [http://www.openoffice.org]. فيما يلي مثال باستخدام نص OpenOffice:

  • تتيح أيقونة موجودة على الجانب الأيسر من نافذة OpenOffice الوصول إلى مصادر البيانات. عندئذٍ تتغير الواجهة لتضم منطقة لإدارة مصادر البيانات:

Image

  • يتم تعيين مصدر البيانات مسبقًا، وهو المصدر [Bibliography]. وبالنقر بزر الماوس الأيمن على منطقة مصادر البيانات، يمكننا إنشاء مصدر جديد باستخدام الخيار [Gérer les sources de données]:

Image

  • يتيح المعالج [Gestion des sources de données] إنشاء مصادر البيانات. بالنقر بزر الماوس الأيمن على منطقة مصادر البيانات، يمكننا إنشاء مصدر جديد باستخدام الخيار [Nouvelle source de données]:

Image

Nom [odbc-firebird-articles]
أي اسم. هنا استخدمنا اسم مصدر البيانات ODBC
Type de BD [odbc]
OpenOffice قادر على إدارة أنواع مختلفة من BD عبر JDBC، ODBC أو مباشرة (MySQL، Dbase، ...). في مثالنا هذا، يجب اختيار ODBC
URL de la source de données
يتيح لنا الزر الموجود على يمين حقل الإدخال الوصول إلى قائمة مصادر ODBC الخاصة بالجهاز. نختار المصدر [odbc-firebird-articles]
  • ثم ننتقل إلى اللوحة [ODBC] لتحديد المستخدم الذي سيتم تسجيل الدخول باسمه:

Image

Nom d'utilisateur [sysdba]
مالك المصدر ODBC
  • ننتقل إلى اللوحة [Tables]. يُطلب إدخال كلمة المرور. وهي هنا [masterkey]:

Image

  • نقوم بـ [OK]. ثم تظهر قائمة جداول المصدر ODBC:

Image

  • يمكننا تحديد الجداول التي سيتم عرضها في المستند [OpenOffice]. هنا نختار الجدول [ARTICLES] ونقوم بإجراء [OK]. وبذلك يكتمل تعريف مصدر البيانات. ثم يظهر في قائمة مصادر البيانات الخاصة بالمستند النشط:

Image

  • يمكننا باستخدام الماوس سحب الجدول [ARTICLES] الموجود أعلاه وإفلاته في النص [OpenOffice]:

Image

3.11. سلسلة اتصال لمصدر ODBC Firebird

  • قم بتشغيل Visual Studio واطلب عرض مستكشف الخوادم [Affichage/Explorateur de serveurs]:
  • انقر بزر الماوس الأيمن على [Connexion de données] واختر الخيار [Ajouter une connexion]:

Image

  • في اللوحة [Provider]، حدد أنك تريد استخدام مصدر ODBC (انظر أعلاه)، ثم انتقل إلى اللوحة [Connection]:

Image

Use data source name
[demo-odbc-firebird]
اختر المصدر ODBC من القائمة المنسدلة. يجب أن يظهر المصدر الذي تم إنشاؤه للتو. إذا لزم الأمر، استخدم [Refresh] لتحديث قائمة المصادر ODBC.
User name [SYSDBA]
المعرف الذي يجب استخدامه لتسجيل الدخول إلى قاعدة البيانات
Password [masterkey]
كلمة المرور المرتبطة بهذا المعرف

وهنا أيضًا، يتيح الزر [Test Connection] التحقق من صحة المعلومات:

Image

  • تأكيد المعالج باستخدام [OK]. عندئذٍ يظهر مصدر البيانات في نافذة [Explorateur de serveurs] في Visual Studio:

Image

  • بالنقر المزدوج على الجدول [ARTICLES]، يمكن الوصول إلى بيانات الجدول:

Image

  • وإذا نقرنا بزر الماوس الأيمن على الرابط [Firebird Server D:\temp\... ] واخترنا الخيار [Propriétés]، يمكننا الوصول إلى خصائص الاتصال:

Image

  • تعد سلسلة الاتصال [ConnectString] خاصية مهمة يجب معرفتها لأن الرمز .NET يحتاج إليها لفتح اتصال بالقاعدة. وهنا تكون سلسلة الاتصال هذه هي:
Provider=MSDASQL.1;Persist Security Info=False;User ID=SYSDBA;Data Source=demo-odbc-firebird;Extended Properties="DSN=demo-odbc-firebird;Driver=Firebird/InterBase(r) driver;Dbname=D:\temp\07-04-05\firebird\DBARTICLES.GDB;CHARSET=NONE;UID=SYSDBA"

تحتوي العديد من عناصر سلسلة الاتصال هذه على قيم افتراضية. يمكن الاكتفاء بسلسلة الاتصال التالية:

"DSN=demo-odbc-firebird;UID=SYSDBA;PASSWORD=masterkey"

وبهذا نختتم عرضنا لبرنامج التشغيل ODBC الخاص بـ [Firebird].

3.12. أين يمكن العثور على SGBD و وMSDE؟

MSDE هو الإصدار المجاني من خادم Microsoft SGBD وSQL. يمكن العثور عليه في URL و[http://www.microsoft.com/sql/msde/downloads/download.asp]:

قم بتنزيل ملف التثبيت ثم قم بتثبيت SGBD بالنقر المزدوج على الملف القابل للتنفيذ الذي تم تنزيله. ستظهر نافذة تطلب تحديد مجلد التثبيت. العنوان مضلل. إنه مجلد مؤقت يمكن حذفه لاحقًا:

يجب قراءة الملف [ReadmeMSDE2000A.htm] بعناية. برنامج التثبيت هو [setup.exe] المذكور أعلاه. يتم تشغيله عبر سطر الأوامر حتى يمكن تمرير المعلمات إليه. أهم هذه المعلمات هي التالية:

Paramètre
الوصف

SAPWD="MotDePasseRenforcé"
يحدد كلمة مرور معززة لتعيينها لحساب تسجيل دخول المسؤول «sa».

INSTANCENAME="NomInstance"
يحدد اسم المثيل. إذا لم يتم تحديد INSTANCENAME، يقوم برنامج التثبيت بتثبيت مثيل افتراضي.

ومن المعلمات الأخرى التي تُستخدم غالبًا لتخصيص التثبيت ما يلي:

Paramètre
الوصف

DISABLENETWORKPROTOCOLS=n
يحدد ما إذا كانت المثيل ستقبل الاتصالات الشبكية من التطبيقات التي يتم تشغيلها على أجهزة كمبيوتر أخرى. بشكل افتراضي، أو إذا حددت DISABLENTWORKPROTOCOL=1، يقوم برنامج التثبيت بتكوين المثيل بحيث يرفض الاتصالات الشبكية. حدد DISABLENETWORKPROTOCOLS=0 لتمكين الاتصالات الشبكية.
SECURITYMODE=SQL
يحدد أن المثيل يجب تثبيته في الوضع المختلط، أي أن المثيل يدعم مصادقة Windows ومصادقة SQL للاتصالات

DATADIR="chemin_dossier_données"
يحدد المجلد الذي يقوم برنامج التثبيت بتثبيت قواعد بيانات النظام وسجلات الأخطاء ونصوص التثبيت فيه. يجب أن تنتهي القيمة المحددة لـ chemin_dossier_données بشرطة مائلة عكسية (\). بالنسبة للمثيل الافتراضي، يضيف برنامج التثبيت MSSQL\ إلى القيمة المحددة. بالنسبة للمثيل المسمى، يضيف برنامج التثبيت MSSQL$NomInstance\، حيث NomInstance هي القيمة المحددة باستخدام المعلمة INSTANCENAME. يقوم برنامج التثبيت بإنشاء ثلاثة مجلدات في الموقع المحدد: مجلد «Data»، ومجلد «Log»، ومجلد «Script».

TARGETDIR="chemin_dossier_exécutables"
يحدد المجلد الذي يقوم برنامج التثبيت بتثبيت الملفات القابلة للتنفيذ لـ MSDE 2000 فيه. يجب أن تنتهي القيمة المحددة لـ chemin_dossier_exécutables بشرطة مائلة عكسية (\). بالنسبة للمثيل الافتراضي، يضيف برنامج التثبيت MSSQL\Binn إلى القيمة المحددة. بالنسبة للمثيل المسمى، يضيف برنامج التثبيت MSSQL$NomInstance\Binn، حيث NomInstance هي القيمة المحددة باستخدام المعلمة INSTANCENAME.

بعد قراءة إرشادات التثبيت المذكورة أعلاه، ننتقل إلى المجلد الذي تم استخراج ملفات التثبيت إليه ونقوم بتنفيذ الأمر DOS التالي (استخدام SGBD بدون شبكة):

dos>setup INSTANCENAME="MSDE140405" SECURITYMODE=SQL SAPWD="azerty"
  • INSTANCENAME="MSDE140405" - سيكون هذا هو اسم مثيلنا MSDE. يمكن تثبيت عدة مثيلات.
  • SECURITYMODE=SQL - سيعمل نظام إدارة قواعد البيانات (SGBD) في وضع المصادقة المختلطة. وبذلك يمكننا الاتصال بـ MSDE بطريقتين:
    • باستخدام حساب مسؤول Windows
    • باستخدام حساب MSDE - سيُطلب عندئذٍ إدخال اسم المستخدم وكلمة المرور. وسيكون هذا هو الوضع الذي يجب استخدامه في أي برنامج يتصل بقاعدة بيانات SGBD.
  • SAPWD="azerty" - ستكون هذه كلمة مرور المستخدم sa في قاعدة البيانات SGBD. يتمتع المستخدم [sa] بحقوق الإدارة على قاعدة البيانات SGBD.

لاستخدام SGBD عبر الشبكة، كان سيتم إصدار الأمر التالي:

dos>setup INSTANCENAME="MSDE140405" SECURITYMODE=SQL SAPWD="azerty" DISABLENETWORKPROTOCOLS=0

برنامج التثبيت بسيط للغاية وينتهي دون إظهار أي رسالة... ومع ذلك، يمكن ملاحظة أن SGBD قد تم تثبيته عبر الخيار [Menu Démarrer -> Panneau de configuration -> Ajouter et supprimer des programmes]:

Image

يتم التثبيت عادةً في C:\Program Files\Microsoft SQL Server\MSSQL$nomInstance:

في المجلد [LOG] ضمن مجلد التثبيت، يوجد ملف سجلات مرحلة التثبيت الخاص بـ SGBD. ويحتوي هذا الملف على معلومة مهمة: اسم مثيل MSDE:

2005-04-14 08:14:29.37 spid4     Le nom du serveur est «PORTABLE1_TAHE\MSDE140405».

من المهم معرفة هذا الاسم لأن جميع عملاء SGBD سيحتاجون إليه. في حالة عدم وجود سجلات التشغيل هذه، يمكن العثور على اسم خادم MSDE وهو [machine_windows\nom_instance_MSDE]. يتوفر اسم الجهاز في عدة أماكن. على سبيل المثال:

  • انقر بزر الماوس الأيمن على [poste de travail] على سطح المكتب، واختر الخيار [propriétés]، ثم اللوحة [Nom de l'ordinateur]:

Image

لا يزال من غير المعروف كيفية تشغيل الخادم MSDE. عادةً ما يتم وضع اختصار في [Démarrer/Démarrage].

Image

عند الاطلاع على خصائص هذا الاختصار، نجد أن الهدف هو كما يلي:

"C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqlmangr.exe" /n

يوجد في المجلد [ C:\Program Files\Microsoft SQL Server] المجلدات الفرعية التالية:

Image

  • MSSQL$MSDE140405 هو المجلد الخاص بالمثيل MSDE الذي قمنا بتثبيته للتو.
  • MSSQL هو المجلد الخاص بالمثيل السابق MSDE. ونظرًا لعدم وجود اسم له، فإننا نطلق عليه اسم «المثيل الافتراضي».
  • المجلد [80] هو مجلد مشترك بين مختلف مثيلات MSDE المثبتة. الهدف [sqlmangr.exe] للاختصار الذي يقوم بتشغيل مثيل لـ MSDE موجود في المجلد [ 80\Tools\Binn].
لنقم بتشغيل MSDE عبر الاختصار الخاص بـ [Démarrer -> Programmes -> Démarrage]. لا يحدث أي شيء تقريبًا سوى ظهور أيقونة في شريط الحالة:
لنضغط مرتين على هذا الرمز:
الخادم MSDE المقترح هنا هو الخادم الافتراضي
[PORTABLE1_TAHE] الموجود على الجهاز. تجدر الإشارة إلى أن
الخادم MSDE الذي قمنا بتثبيته يُسمى
[PORTABLE1_TAHE\MSDE140405]. نقوم بتغيير
اسم الخادم في الحقل المناسب:
إذا سارت الأمور على ما يرام، يجب تشغيل المثيل [MSDE140405]:

يمكننا إجراء فحص أولي. في نفس المجلد الذي يوجد فيه [sqlmangr.exe]، يوجد عميل وحدة التحكم [osql.exe] الذي يسمح بالاتصال بخادم MSDE وإصدار الأوامر SQL. وقد قمنا أثناء التثبيت بتعيين كلمة المرور [azerty] للمسؤول [sa] على خادمنا MSDE. باستخدام عميل وحدة التحكم، سنقوم بالاتصال بالخادم الذي تم تثبيته حديثًا. عند تنفيذ الأمر [osql -?]، يتم عرض قائمة المعلمات الممكنة:

C:\Program Files\Microsoft SQL Server\80\Tools\Binn>osql -?
utilisation : osql
  [-U ID de connexion]
  [-P mot de passe]
  [-S serveur]
  [-H nom de l'hôte]
  [-E connexion approuvée]
  [-d utiliser le nom de la base de données]
  [-l limite du temps de connexion]
  [-t limite du temps de requête]
  [-h en-têtes]
  [-s séparateur de colonnes]
  [-w largeur de colonne]
  [-a taille du paquet]
  [-e entrée d'écho]
  [-I Activer les identificateurs marqués]
  [-L liste des serveurs]
  [-c fin de cmd]           [-D nom ODBC DSN]
  [-q "requête cmdline"]
  [-Q "requête cmdline" et quitter]
  [-n supprimer la numérotation]
  [-m niveau d'erreur]
  [-r msgs vers stderr]
  [-V severitylevel]
  [-i fichier d'entrée]
  [-o fichier de sortie]
  [-p imprimer les statistiques]  [-b abandon du lot d'instruction après erreur]

  [-X[1] désactive les commandes [et quitte avec un avertissement]]
  [-O utiliser le comportement Old ISQL désactive les éléments suivants]
      <EOF> traitement par lot d'instructions
      Mise à l'échelle automatique de la largeur de la console
      Messages larges
      niveau d'erreur par défaut de  -1 au lieu de 1
  [-? description de la syntaxe]

دعونا نُشغّل الخادم [MSDE140405] كما هو موضح أعلاه، ثم في نافذة DOS، نستخدم [osql] للاتصال بالخادم [portable1_tahe\msde140405] باستخدام الهوية [sa, azerty]:

C:\Program Files\Microsoft SQL Server\80\Tools\Binn>OSQL.EXE -U sa -S portable1_tahe\msde140405 -P azerty
1>

تشير موجهة الأوامر [1>] إلى أن [osql] في انتظار أمر. نحن متصلون بشكل صحيح. لاستخدام [osql] بشكل صحيح، يجب الرجوع إلى وثائق MSDE. تتوفر هذه الوثائق بتنسيقات مختلفة (pdf، htmlhelp، ...). هذه الوثائق ضخمة جدًا. يُفضل عمومًا استخدام عميل رسومي للعمل مع قاعدة بيانات MSDE. وهذا ما سيتم عرضه لاحقًا. للخروج من [osql]، نستخدم الأمر [exit]:

1> exit

سنرى الآن كيفية إنشاء قواعد البيانات في خادم MSDE الذي تم تثبيته حديثًا. قبل ذلك، سنقدم عرضًا سريعًا لأداة [MSDE Manager] التي تسمح بتعديل وضع المصادقة لخادم MSDE. ففي الواقع، إذا تم تثبيت مثل هذا الخادم باستخدام خيارات التثبيت الافتراضية، فإن وضع المصادقة للخادم يكون من النوع [authentification windows]. ولا يسمح هذا النوع من المصادقة إلا للمستخدمين المسجلين على جهاز ويندوز (ربما عبر مجال). وبالنسبة لبرنامج VB.NET الذي يرغب في الاتصال بقاعدة بيانات لاستغلال محتواها، فإن هذا الوضع يثبت أنه غير عملي. والأمر أسوأ بالنسبة لتطبيقات Java التي تصل إلى SGBD عبر برنامج تشغيل JDBC. لذلك يُفضل استخدام المصادقة المختلطة التي، بالإضافة إلى المصادقة السابقة، تقبل أزواج (اسم المستخدم، كلمة المرور) مُسجلة في ملف SGBD. تتيح أداة [MSDE Manager] إجراء هذه العملية.

3.13. أين يمكن العثور على MSDE Manager؟

[MSDE Manager] هي أداة لإدارة SGBD وMSDE. يمكن العثور عليها في URL و[http://www.valesoftware.com/].

يمكننا تنزيل الإصدار المجاني من خلال الرابط أعلاه:

Image

Image

تتميز النسخة التجريبية بفترة صلاحية قصيرة. وهذا مناسب لأننا لن نستخدمها إلا لغرض واحد محدد. نقوم بتنزيل المنتج وتثبيته. يتم وضع اختصار على سطح المكتب. نستخدمه لتشغيل MSDE Manager. بعد تجاوز النوافذ الأولى، نصل إلى هذه النافذة:

Image

  • قم بتشغيل الخادم MSDE140405
  • يجب أن تكون مسجلاً الدخول إلى جهاز ويندوز بصفة مسؤول
  • انقر بزر الماوس الأيمن على الرابط [SQL Server Group] واختر الخيار [New SQL Server Registration]:

Image

Image

ستظهر صفحة الخصائص التالية:

Server Name 
portable1_tahe\msde140405 - اسم مثيل MSDE الذي تريد الاتصال به
Connection 
مصادقة Windows - هذا الوضع متاح دائمًا ويسمح لمسؤول جهاز Windows بالاتصال بالخادم MSDE
Server Group 
حدد مجموعة الخوادم الوحيدة المعروضة [SQL Server Group]

بمجرد النقر على [OK]، يتم عرض شجرة خصائص الخادم MSDE140405:

Image

يمكننا البدء في إنشاء قواعد البيانات. لكننا لن نفعل ذلك لأننا سنستخدم منتجًا آخر، وهو نسخة مطابقة للمنتج IBExpert الذي درسناه سابقًا. سنقوم ببساطة بتغيير وضع المصادقة لـ MSDE. لنضغط بزر الفأرة الأيمن على الخادم MSDE140405 أعلاه ونختار الخيار [Design]:

Image

تظهر لنا نافذة المعلومات التالية:

Image

تقدم لوحة [General] معلومات عن الخادم MSDE الذي نحن متصلون به. الصفحة [Security] هي التي تهمنا:

Image

يجب التأكد هنا من أن وضع المصادقة لـ MSDE هو بالفعل [SQL Server and Windows]. وبذلك يمكننا الاتصال بـ MSDE بطريقتين:

  • باستخدام حساب مسؤول ويندوز - وهذا ما تم هنا
  • باستخدام حساب MSDE — سيُطلب عندئذٍ إدخال اسم المستخدم وكلمة المرور. وستكون هذه هي الطريقة التي يجب استخدامها في أي برنامج يتصل بقاعدة بيانات SGBD.

نؤكد هذا الاختيار ونغادر MSDE Manager. لن نحتاج إليه بعد الآن. لإنشاء قواعد بيانات MSDE، سنستخدم أداة أخرى: EMS MS SQL Manager.

3.14. أين يمكن العثور على EMS و وMS وSQL Manager؟

برنامج EMS MS SQL Manager هو أداة رسومية تتيح العمل مع خادم Microsoft SGBD SQL وبالتالي MSDE. وهي تشبه إلى حد كبير أداة IB-Expert التي تم وصفها سابقًا. وهي متاحة في الإصدار URL [http://sqlmanager.net/] (أبريل 2005):

Image

يقدم الموقع أدوات إدارة للعديد من SGBD. اتبع الرابط [MS SQL Manager]:

Image

فيما سبق، اخترنا الإصدار المُخفف من المنتج. قم بتنزيله وتثبيته. سيكون لديك مجلد مشابه لما يلي:

Image

الملف القابل للتنفيذ هو [MsManager.exe]. عادةً ما يتوفر اختصار في القائمة [Démarrer]:

Image

بمجرد تشغيله، يعرض MS SQL Manager النافذة التالية:

Image

لنبدأ بتسجيل الخادم MSDE الذي نريد العمل عليه باستخدام الخيار [Database/Register Host]:

تعليقات:

  • الخطوة 1 - كما ذكرنا سابقًا، يدعم MSDE وضعين للمصادقة: Windows و SQL Server. في وضع [windows]، يتم استخدام حسابات جهاز Windows. في وضع [SQL Server]، تُستخدم حسابات SGBD. يمكن لـ [SQL Server] العمل في وضع [Windows] أو في الوضع المختلط [Windows, SQL Server]. لا يزال وضع المصادقة [Windows] موجودًا. أما وضع المصادقة المختلط، فهو ليس نشطًا دائمًا. وقد رأينا كيفية تفعيله باستخدام MSDE Manager. في المثال أعلاه، تم تسجيل الدخول باستخدام حساب مسؤول.
  • الخطوة 2 - بعد نجاح المصادقة، يتم عرض قواعد البيانات الافتراضية لـ MSDE. في ما سبق، تم تحديدها جميعًا.

تعليقات:

  • الخطوة 3: يمكن تحديد خيارات إدارة قواعد البيانات المختارة. هنا، تم الاحتفاظ بالخيارات المقترحة افتراضيًا.
  • الخطوة 4: نقوم بتسجيل الخادم MSDE باستخدام الزر [Register]

ثم يظهر الخادم MSDE في مستكشف قواعد البيانات:

Image

لنستخدم الخيار [Database/Create Database] لإنشاء قاعدة بيانات:

الخطوة 2:

عندما تظهر صفحة المعلومات هذه، يكون قد تم إنشاء قاعدة البيانات [dbarticles]. يمكن التأكد من ذلك باستخدام الزر [Test Connect]. في الحقل [Database alias]، يمكن إدخال ما تريد. هنا قمنا بتحديد:

  • اسم قاعدة البيانات
  • اسم الخادم MSDE الذي توجد عليه
  • المستخدم [admarticles] الذي سيكون مالك هذه القاعدة وكلمة مروره [mdparticles]. لم يتم إنشاء هذا المستخدم بعد، ولكن سيتم إنشاؤه قريبًا.

الخطوة 3:

  • باستخدام الزر [Register]، نقوم بتسجيل قاعدة البيانات الجديدة في [MS SQL Server ]. بعد التسجيل، تظهر قاعدة البيانات [admarticles] في قائمة قواعد البيانات. بالنقر المزدوج عليها، يتم عرض شجرة خصائصها.

لنقم بإنشاء حساب تسجيل دخول جديد ليكون المسؤول عن قاعدة البيانات [admarticles].

  • اختر الخيار [Tools/Login manager]:

Image

  • نلاحظ أن هناك حسابين تم تعريفهما بالفعل:
    • [BUILTIN\Administrateurs]: يستخدم هذا الحساب مصادقة Windows. وهو يمثل مسؤولي جهاز Windows الذي يوجد عليه الخادم MSDE
    • sa: يستخدم هذا الحساب مصادقة SQL. وهو بشكل افتراضي مسؤول خادم MSDE. تجدر الإشارة إلى أنه هنا، وفقًا للإعدادات المحددة عند تثبيت SGBD MSDE، فإن كلمة المرور الخاصة به هي [azerty].
  • نضغط بزر الفأرة الأيمن على منطقة تسجيل الدخول ونضيف حسابًا جديدًا:
  • تظهر نافذة إدخال البيانات حيث نحدد خصائص اسم المستخدم الجديد:

Image

  • اسم اسم المستخدم: admarticles
  • كلمة المرور: mdparticles
  • بمجرد الضغط على الزر [OK]، يعرض لنا MS Manager الاستعلامات SQL التي سيقوم بتنفيذها:

Image

اللغة SQL الموضحة أعلاه هي Transact-SQL، ولغة SQL هي لغة MSDE. نطلب تنفيذ هذا الرمز بواسطة [OK]

  • يتم إدراج اسم المستخدم الجديد في قائمة أسماء المستخدمين:

Image

  • في نافذة خصائص قاعدة البيانات [dbarticles]، نضغط بزر الفأرة الأيمن على [users] لإنشاء مستخدم يتمتع بحقوق على قاعدة البيانات [dbarticles]:

Image

  • ستظهر لنا النافذة التالية:

Image

  • في القائمة المنسدلة [Login]، تظهر قائمة بأسماء المستخدمين الموجودة. نختار اسم المستخدم [admarticles].
  • في [Name]، نحدد اسم مستخدم. يمكن ربط عدة مستخدمين بنفس اسم تسجيل الدخول. ولذلك، في MSDE، يتطلب إنشاء مستخدم أولاً إنشاء اسم تسجيل دخول. تصبح لوحة [User] كما يلي:

Image

  • لننتقل الآن إلى اللوحة [Member Of] التي ستسمح لنا بتحديد صلاحيات المستخدم:

Image

  • أنا لست مستخدمًا معتادًا لـ MSDE ولا أعرف المعنى الدقيق لكل دور من الأدوار المقترحة في النافذة اليسرى. يبدو الدور [db_owner] مغريًا (owner=المالك). لذا نختاره لمستخدمنا [admarticles]:

Image

  • نقوم بتأكيد اختياراتنا من خلال الزر [Compile] أعلاه. الطلبات SQL المقدمة للتنفيذ هي التالية:

Image

  • نقوم بتجميعها باستخدام [OK]. لدينا الآن مستخدم في قاعدة البيانات [dbarticles]:

Image

  • لنقم الآن بإنشاء جدول. نضغط بزر الفأرة الأيمن على [Tables] ونختار الخيار [New Table]. تظهر لنا نافذة تعريف خصائص الجدول:

Image

  • لنبدأ بتسمية الجدول [ARTICLES] باستخدام حقل الإدخال [Table Name]. ثم ننتقل إلى اللوحة [Fields]:

Image

  • لنحدد الحقول التالية:

Image

ما لم نقم بـ«تجميع» تعريفنا، لن يتم إنشاء الجدول. لنستخدم الزر [Compile] أعلاه لإكمال تعريف الجدول. يقوم [MS SQL Manager] بإعداد استعلامات SQL لإنشاء الجدول ويطلب التأكيد:

Image

ومن المثير للاهتمام أن الزر [MS SQL Manager] يعرض الاستعلامات SQL التي قام بتنفيذها. وهذا يتيح التعلم في الوقت نفسه للغة Transact-SQL. يتيح الزر [Commit] تأكيد المعاملة الجارية، بينما يتيح الزر [Rollback] إلغاءها. هنا نقبلها باستخدام [Commit]. وبمجرد القيام بذلك، يقوم [MS SQL Manager] بإضافة الجدول الذي تم إنشاؤه إلى شجرة قاعدة البيانات لدينا:

Image

بالنقر المزدوج على الجدول، يمكننا الوصول إلى خصائصه:

Image

تتيح لنا لوحة [Checks] إضافة قيود تكامل جديدة إلى الجدول. بالنسبة للجدول [ARTICLES]، سنقوم بإنشاء القيود التالية:

  • يجب أن تكون قيم الحقل [ID, PRIX, STOCKACTUEL, STOKMINIMUM] >=0
  • يجب ألا يكون الحقل [NOM] فارغًا

في لوحة [Checks]، انقر بزر الماوس الأيمن على المنطقة الفارغة لإضافة قيد جديد [New check]:

Image

  • تظهر صفحة تحرير القيود على النحو التالي:

Image

Name: اسم القيد

الجدول: الجدول الذي يُطبق عليه القيد

التعريف: تعبير عن القيد

يتم تجميع القيد بواسطة الزر [Compile] أعلاه.

  • مرة أخرى، يعرض [MS SQL Manager] الأوامر SQL التي تم تنفيذها:

Image

  • يتم تأكيدها باستخدام الزر [Commit] (غير موضح). إذا عدنا إلى اللوحة [Checks] الخاصة بالجدول [ARTICLES]، يظهر القيد الجديد:

Image

  • ونقوم بنفس الطريقة بتعريف القيود الأخرى لنحصل في النهاية على القائمة التالية:

Image

وبعد ذلك، نفتح اللوحة [DDL] الخاصة بالجدول [ARTICLES]:

Image

يقدم هذا اللوحة كود Transact-SQL لإنشاء الجدول مع جميع قيوده. يمكن حفظ هذا الكود في نص برمجي لتشغيله لاحقًا:

CREATE TABLE [ARTICLES] (
  [id] int NOT NULL,
  [nom] varchar(20) COLLATE French_CI_AS NOT NULL,
  [prix] float(53) NOT NULL,
  [stockactuel] int NOT NULL,
  [stockminimum] int NOT NULL,
  CONSTRAINT [ARTICLES_uq] UNIQUE ([nom]),
  PRIMARY KEY ([id]),
  CONSTRAINT [ARTICLES_ck_id] CHECK ([id] > 0),
  CONSTRAINT [ARTICLES_ck_nom] CHECK ([nom] <> ''),
  CONSTRAINT [ARTICLES_ck_prix] CHECK ([prix] >= 0),
  CONSTRAINT [ARTICLES_ck_stockactuel] CHECK ([stockactuel] >= 0),
  CONSTRAINT [ARTICLES_ck_stockminimum] CHECK ([stockminimum] >= 0)
)
ON [PRIMARY]
GO

حان الوقت الآن لإدخال بعض البيانات في الجدول [ARTICLES]. وللقيام بذلك، سنستخدم لوحة التحكم الخاصة به [Data]:

Image

يتيح الزر [+] إضافة سطر، بينما يتيح الزر [-] حذفه. يتم إدخال البيانات ببساطة عن طريق الكتابة في حقول الإدخال الخاصة بكل سطر في الجدول. يتم تأكيد السطر بالضغط على الزر [Post Edit] الموجود أدناه:

Image

لنقم بإنشاء مقالتين:

Image

يتيح [MS SQL Manager] إصدار استعلامات SQL عبر الخيار [Tools/Show SQL Editor] أو [F12]. وبذلك يمكننا الوصول إلى محرر متقدم لطلبات SQL يمكننا من خلاله تشغيل الطلبات. يتم حفظ هذه الطلبات، مما يتيح لنا العودة إلى طلب تم تشغيله مسبقًا. وإليك مثال على ذلك:

Image

نقوم بتنفيذ الاستعلام SQL باستخدام الزر [Execute] أعلاه. ونحصل على النتيجة التالية:

Image

سنوقف عروضنا التوضيحية عند هذا الحد. يتبين أن الزوج [MS SQL Manager - MSDE]، شأنه شأن الزوج [IBExpert - Firebird]، ممتاز أيضًا لتعلم قواعد البيانات.

3.15. إنشاء مصدر ODBC [MSDE]

عادةً ما يتم تثبيت برنامج التشغيل ODBC الخاص بخادم SQL بشكل افتراضي على أجهزة ويندوز.

  • تشغيل الأداة [Démarrer -> Paramètres -> Outil de configuration -> Outils d'administration -> Sources de données ODBC]:

Image

  • ستظهر النافذة التالية:

Image

  • نضيف مصدر بيانات نظام جديد (لوحة [System DSN]) سنربطه بقاعدة البيانات MSDE التي أنشأناها في الفقرة السابقة:

Image

  • علينا أولاً تحديد برنامج التشغيل ODBC الذي سنستخدمه. في الأعلى، نختار برنامج التشغيل الخاص بـ [SQL Server] ثم ننتقل إلى [Terminer]. عندئذٍ يتولى مساعد برنامج التشغيل ODBC الخاص بـ [SQL Server] زمام الأمور:

Image

  • نقوم بملء الحقول المختلفة:
Nom [odbc-msde-articles]
اسم المصدر ODBC - يمكن أن يكون أي اسم
Description
يمكن أن يكون أي اسم
Serveur SQLMap
portable_tahe\msde140405
اسم الخادم MSDE الذي يحتوي على بيانات المصدر ODBC
  • نقوم بإنشاء [Suivant] لتقديم معلومات جديدة:

Image

  • نقوم بملء الحقول المختلفة:
Authentification SQL Server
نحدد أننا سنتصل بمصدر البيانات ODBC باستخدام اسم مستخدم مسجل في الخادم MSDE
ID de connexion [admarticles]
تسجيل دخول المستخدم
Mot de passe [mdparticles]
كلمة مرور المستخدم
  • يُلاحظ أننا نستخدم للمرة الأولى المستخدم (admarticles، mdparticles) الذي تم إنشاؤه في فقرة سابقة. مرة أخرى، ننفذ الأمر [Suivant] للحصول على الصفحة الجديدة التالية:

Image

  • نقوم بملء الحقول المختلفة:
Changer la base ...
نختار قاعدة البيانات [dbarticles] كقاعدة بيانات افتراضية للمستخدم [admarticles]
  • نقوم بكتابة [Suivant] للحصول على الصفحة الجديدة التالية:

Image

  • نقبل القيم الافتراضية ونقوم بإنشاء [Terminer]. وفيما يلي ملخص لخصائص المصدر ODBC الذي سيتم إنشاؤه:

Image

  • يتيح لنا الزر [Tester la source de données] فرصة للتحقق من صحة المعلومات التي أدخلناها. تأكد من تشغيل MSDE ثم اختبر الاتصال:

Image

  • نحن الآن على يقين من أن الزوج [admarticles, mdparticles] قد تم التعرف عليه.

لإجراء اختبارات إضافية، يمكن للقارئ اتباع الإجراء الموضح في الفقرة 3.10.

3.16. سلسلة الاتصال بقاعدة البيانات MSDE

  • قم بتشغيل Visual Studio واطلب عرض مستكشف الخوادم [Affichage/Explorateur de serveurs]:
  • انقر بزر الماوس الأيمن على [Connexion de données] واختر الخيار [Ajouter une connexion]:

Image

  • في اللوحة [Provider]، حدد أنك تريد استخدام مصدر خادم SQL، ثم انتقل إلى اللوحة [Connection]. لاحظ أنه لا يتم هنا استخدام برنامج تشغيل ODBC.

Image

Nom de serveur
[portable1_tahe\msde140405]
اسم الخادم MSDE الذي يتم الاتصال به
Nom d'utilisateur [admarticles]
معرف الدخول المستخدم للاتصال بقاعدة البيانات
Mot de passe [mdparticles]
كلمة المرور المرتبطة بهذا المعرف
base de données [dbarticles]
قاعدة البيانات التي نريد العمل معها

يتيح الزر [Tester la connexion] التحقق من صحة المعلومات:

Image

  • تأكيد المساعد بواسطة [OK]. ومن الغريب أن نافذة جديدة تطلب خصائص الاتصال:

Image

  • نقوم بإدخالها مرة أخرى وننفذ الأمر [OK]. عندئذٍ يظهر مصدر البيانات في نافذة [Explorateur de serveurs] في Visual Studio:

Image

  • بالنقر المزدوج على الجدول [ARTICLES]، يمكننا الوصول إلى بيانات الجدول:

Image

  • وإذا نقرنا بزر الماوس الأيمن على الرابط [portable1_tahe\msde140405.dbarticles.admarticles] في اللوحة [Explorateur de serveurs] واخترنا الخيار [Propriétés]، يمكننا الوصول إلى خصائص الاتصال:

Image

  • تعد سلسلة الاتصال [ConnectString] خاصية مهمة يجب معرفتها لأن الرمز .NET يحتاجها لفتح اتصال بالقاعدة. وهنا تكون سلسلة الاتصال هذه هي:
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=admarticles;Initial Catalog=dbarticles;Data Source=portable1_tahe\msde140405;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=PORTABLE1_TAHE;Use Encryption for Data=False;Tag with column collation when possible=False

تحتوي العديد من عناصر سلسلة الاتصال هذه على قيم افتراضية. يمكن الاكتفاء بسلسلة الاتصال التالية:

"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=admarticles;Initial Catalog=dbarticles;Data Source=portable1_tahe\msde140405;PASSWORD=mdparticles"