3. المرفقات
3.1. إنشاء مشروع ويب باستخدام Visual Studio.net على XP العائلي
يتيح Visual Studio.net إنشاء أنواع مختلفة من المشاريع:

لإنشاء مشروع تطبيق ويب، عادةً ما يتم اختيار النوع [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]

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

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

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

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

تحتوي الصفحة على نص ومكون خادم من النوع [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]. أكمل الكود:

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

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

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

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

لقد نجحنا في إنشاء تطبيق ويب باستخدام Visual Studio من خلال:
- مشروع من النوع [bibliothèque de classes]
- خادم الويب Cassini
أصبحنا الآن قادرين على إنشاء تطبيقات ويب على أجهزة لا تحتوي على خادم IIS، كما هو الحال مع أجهزة ويندوز XP، الإصدار العائلي.
3.2. أين يمكن العثور على خادم الويب Cassini ؟
للعمل مع منصة .NET من Microsoft، يمكن استخدام خادم الويب Cassini. وهو متاح عبر منتج يُسمى [WebMatrix]، وهو بيئة مجانية لتطوير الويب على منصات .NET متاحة على URL:

سنقوم بمتابعة خطوات تثبيت المنتج بعناية:
- تنزيل وتثبيت منصة .NET (الإصدار 1.1 في مارس 2004)
- تنزيل وتثبيت WebMatrix
- تنزيل وتثبيت MSDE (Microsoft Data Engine) وهو إصدار محدود من SQL Server.
بمجرد انتهاء التثبيت، سيصبح المنتج [WebMatrix] متاحًا ضمن البرامج المثبتة:

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

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

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

- تتيح علامة التبويب [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 إذا لم يكن قيد التشغيل بالفعل

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

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

لنفتح نافذة 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] بدون معلمات:
تظهر لنا نافذة المساعدة:

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

لنربط المجلد الفعلي [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 نشطًا عندئذٍ وتظهر أيقونته في شريط المهام. إذا نقرنا عليها نقرًا مزدوجًا:

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

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

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

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

"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" | |
"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/].

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

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

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

في أي مشروع Visual Studio يستخدم Spring، يجب القيام بأمرين بشكل منهجي:
- وضع الملفات المذكورة أعلاه في مجلد [bin] الخاص بالمشروع
- إضافة مرجع إلى التجميع [Spring.Core.dll] إلى المشروع
3.4. أين يمكن العثور على Nunit؟
الموقع الرئيسي لـ Nunit هو [http://www.nunit.org/]. الإصدار المتوفر في أبريل 2005 هو 2.2.0:

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


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

توجد الفئة التي يتم اختبارها في [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] في مستكشف الحلول:
![]() | ![]() |

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

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

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

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

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

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

يُرمز لاختبار ناجح على إحدى الطرق بنقطة خضراء بجانب الطريقة في النافذة اليسرى. ويُرمز للاختبار الفاشل بنقطة حمراء.
تُظهر النافذة [Console.Out] الموجودة على اليمين عروض الشاشة الناتجة عن الطرق التي تم اختبارها. هنا، أردنا متابعة سير الاختبار:
- يُظهر السطر 1 أن طريقة السمة <Setup()> يتم تنفيذها قبل الاختبار
- السطران 2 و3 ناتجان عن الطريقة [demo] التي تم اختبارها (انظر الكود أعلاه)
- يُظهر السطر 4 أن طريقة السمة <TearDown()> تُنفَّذ بعد الاختبار
3.5. أين يمكن العثور على SGBD Firebird؟
الموقع الرئيسي لـ Firebird هو [http://firebird.sourceforge.net/]. توفر صفحة التنزيلات الروابط التالية (أبريل 2005):

سيتم تنزيل العناصر التالية:
SGBD لنظام ويندوز | |
مكتبة فئات للتطبيقات .NET تتيح الوصول إلى SGBD دون الحاجة إلى برنامج تشغيل ODBC. | |
برنامج التشغيل ODBC الخاص بـ Firebird |
قم بتثبيت هذه العناصر. يتم تثبيت SGBD في مجلد يحتوي على محتويات مشابهة لما يلي:

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

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

يتيح الخيار [Firebird Guardian] تشغيل/إيقاف SGBD. بعد التشغيل، تظل أيقونة SGBD في شريط مهام ويندوز:
![]() |
لإنشاء قواعد بيانات Firebird واستخدامها باستخدام عميل سطر الأوامر [isql.exe]، من الضروري قراءة الوثائق المرفقة مع المنتج في المجلد [doc]. وهناك طريقة أسرع للعمل مع Firebird وهي استخدام عميل رسومي. ومن أمثلة هذه العملاء برنامج IB-Expert الموصوف في الفقرة التالية.
3.6. أين يمكن العثور على IB- Expert؟
الموقع الرئيسي لـ Firebird هو [http://www.ibexpert.com/]. توفر صفحة التنزيلات الروابط التالية:

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

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

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

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

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

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

[IBExpert] قادر على إدارة مختلف ملفات SGBD المشتقة من Interbase. حدد إصدار Firebird الذي قمت بتثبيته |
![]()
بمجرد تأكيد هذه النافذة الجديدة بواسطة [Register]، نحصل على النتيجة التالية:

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

لنقم بإنشاء جدول. نضغط بزر الفأرة الأيمن على [Tables] ونختار الخيار [New Table]. تظهر لنا نافذة تعريف خصائص الجدول:
![]() |
لنبدأ بتسمية الجدول [ARTICLES] باستخدام حقل الإدخال [1]:
![]() |
نستخدم حقل الإدخال [2] لتعريف مفتاح أساسي [ID]:
![]() |
يتم تعيين الحقل كمفتاح أساسي بالنقر المزدوج على منطقة [PK] (المفتاح الأساسي) الخاصة بالحقل. لنقم بإضافة حقول باستخدام الزر [3]:

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

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

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

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

نجد هنا قيد المفتاح الأساسي الذي أنشأناه. يمكننا إضافة قيود أخرى:
- مفاتيح خارجية [Foreign Keys]
- قيود سلامة الحقول [Checks]
- قيود تفرد الحقول [Uniques]
نشير إلى أن:
- يجب أن تكون قيم الحقل [ID, PRIX, STOCKACTUEL, STOKMINIMUM] أكبر من 0
- يجب أن يكون الحقل [NOM] غير فارغ وفريد
لنفتح اللوحة [Checks] ونضغط بزر الماوس الأيمن في مساحة تعريف القيود الخاصة بها لإضافة قيد جديد:

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

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

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

لنحدد القيد:

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

يقدم هذا الرمز 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]:

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

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

سنوقف عروضنا التوضيحية عند هذا الحد. يثبت الثنائي 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]:

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

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

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

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

اسم DSN للمصدر ODBC - يمكن أن يكون أي اسم | |
اسم ملف Firebird BD المراد استخدامه - استخدم [Browse] للإشارة إلى ملف .gbd المقابل | |
معرف المستخدم المطلوب لتسجيل الدخول إلى قاعدة البيانات | |
كلمة المرور المرتبطة بهذا المعرف |
يتيح الزر [Test connection] التحقق من صحة المعلومات التي أدخلناها. قبل استخدامه، قم بتشغيل SGBD [Firebird]:

- قم بتأكيد المساعد ODBC، عن طريق تكرار [OK] عدة مرات حسب الحاجة
3.10. اختبار المصدر ODBC
هناك طرق متنوعة للتحقق من صحة عمل مصدر ODBC. سنستخدم هنا برنامج Excel:

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

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

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

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

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

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

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

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

هناك طرق أخرى لاختبار صحة مصدر ODBC. يمكننا، على سبيل المثال، استخدام الحزمة المجانية OpenOffice المتوفرة على URL [http://www.openoffice.org]. فيما يلي مثال باستخدام نص OpenOffice:
![]() | ![]() |
- تتيح أيقونة موجودة على الجانب الأيسر من نافذة OpenOffice الوصول إلى مصادر البيانات. عندئذٍ تتغير الواجهة لتضم منطقة لإدارة مصادر البيانات:

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

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

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

مالك المصدر ODBC |
- ننتقل إلى اللوحة [Tables]. يُطلب إدخال كلمة المرور. وهي هنا [masterkey]:

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

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

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

3.11. سلسلة اتصال لمصدر ODBC Firebird
- قم بتشغيل Visual Studio واطلب عرض مستكشف الخوادم [Affichage/Explorateur de serveurs]:
![]() |
- انقر بزر الماوس الأيمن على [Connexion de données] واختر الخيار [Ajouter une connexion]:

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

اختر المصدر ODBC من القائمة المنسدلة. يجب أن يظهر المصدر الذي تم إنشاؤه للتو. إذا لزم الأمر، استخدم [Refresh] لتحديث قائمة المصادر ODBC. | |
المعرف الذي يجب استخدامه لتسجيل الدخول إلى قاعدة البيانات | |
كلمة المرور المرتبطة بهذا المعرف |
وهنا أيضًا، يتيح الزر [Test Connection] التحقق من صحة المعلومات:

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

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

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

- تعد سلسلة الاتصال [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"
تحتوي العديد من عناصر سلسلة الاتصال هذه على قيم افتراضية. يمكن الاكتفاء بسلسلة الاتصال التالية:
وبهذا نختتم عرضنا لبرنامج التشغيل 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] المذكور أعلاه. يتم تشغيله عبر سطر الأوامر حتى يمكن تمرير المعلمات إليه. أهم هذه المعلمات هي التالية:
الوصف | |
| يحدد كلمة مرور معززة لتعيينها لحساب تسجيل دخول المسؤول «sa». |
| يحدد اسم المثيل. إذا لم يتم تحديد INSTANCENAME، يقوم برنامج التثبيت بتثبيت مثيل افتراضي. |
ومن المعلمات الأخرى التي تُستخدم غالبًا لتخصيص التثبيت ما يلي:
الوصف | |
| يحدد ما إذا كانت المثيل ستقبل الاتصالات الشبكية من التطبيقات التي يتم تشغيلها على أجهزة كمبيوتر أخرى. بشكل افتراضي، أو إذا حددت DISABLENTWORKPROTOCOL=1، يقوم برنامج التثبيت بتكوين المثيل بحيث يرفض الاتصالات الشبكية. حدد DISABLENETWORKPROTOCOLS=0 لتمكين الاتصالات الشبكية. |
يحدد أن المثيل يجب تثبيته في الوضع المختلط، أي أن المثيل يدعم مصادقة Windows ومصادقة SQL للاتصالات | |
| يحدد المجلد الذي يقوم برنامج التثبيت بتثبيت قواعد بيانات النظام وسجلات الأخطاء ونصوص التثبيت فيه. يجب أن تنتهي القيمة المحددة لـ chemin_dossier_données بشرطة مائلة عكسية (\). بالنسبة للمثيل الافتراضي، يضيف برنامج التثبيت MSSQL\ إلى القيمة المحددة. بالنسبة للمثيل المسمى، يضيف برنامج التثبيت MSSQL$NomInstance\، حيث NomInstance هي القيمة المحددة باستخدام المعلمة INSTANCENAME. يقوم برنامج التثبيت بإنشاء ثلاثة مجلدات في الموقع المحدد: مجلد «Data»، ومجلد «Log»، ومجلد «Script». |
| يحدد المجلد الذي يقوم برنامج التثبيت بتثبيت الملفات القابلة للتنفيذ لـ MSDE 2000 فيه. يجب أن تنتهي القيمة المحددة لـ chemin_dossier_exécutables بشرطة مائلة عكسية (\). بالنسبة للمثيل الافتراضي، يضيف برنامج التثبيت MSSQL\Binn إلى القيمة المحددة. بالنسبة للمثيل المسمى، يضيف برنامج التثبيت MSSQL$NomInstance\Binn، حيث NomInstance هي القيمة المحددة باستخدام المعلمة INSTANCENAME. |
بعد قراءة إرشادات التثبيت المذكورة أعلاه، ننتقل إلى المجلد الذي تم استخراج ملفات التثبيت إليه ونقوم بتنفيذ الأمر DOS التالي (استخدام SGBD بدون شبكة):
- INSTANCENAME="MSDE140405" - سيكون هذا هو اسم مثيلنا MSDE. يمكن تثبيت عدة مثيلات.
- SECURITYMODE=SQL - سيعمل نظام إدارة قواعد البيانات (SGBD) في وضع المصادقة المختلطة. وبذلك يمكننا الاتصال بـ MSDE بطريقتين:
- باستخدام حساب مسؤول Windows
- باستخدام حساب MSDE - سيُطلب عندئذٍ إدخال اسم المستخدم وكلمة المرور. وسيكون هذا هو الوضع الذي يجب استخدامه في أي برنامج يتصل بقاعدة بيانات SGBD.
- SAPWD="azerty" - ستكون هذه كلمة مرور المستخدم sa في قاعدة البيانات SGBD. يتمتع المستخدم [sa] بحقوق الإدارة على قاعدة البيانات SGBD.
لاستخدام SGBD عبر الشبكة، كان سيتم إصدار الأمر التالي:
برنامج التثبيت بسيط للغاية وينتهي دون إظهار أي رسالة... ومع ذلك، يمكن ملاحظة أن SGBD قد تم تثبيته عبر الخيار [Menu Démarrer -> Panneau de configuration -> Ajouter et supprimer des programmes]:
![]()
يتم التثبيت عادةً في C:\Program Files\Microsoft SQL Server\MSSQL$nomInstance:
![]() | ![]() |
في المجلد [LOG] ضمن مجلد التثبيت، يوجد ملف سجلات مرحلة التثبيت الخاص بـ SGBD. ويحتوي هذا الملف على معلومة مهمة: اسم مثيل MSDE:
من المهم معرفة هذا الاسم لأن جميع عملاء SGBD سيحتاجون إليه. في حالة عدم وجود سجلات التشغيل هذه، يمكن العثور على اسم خادم MSDE وهو [machine_windows\nom_instance_MSDE]. يتوفر اسم الجهاز في عدة أماكن. على سبيل المثال:
- انقر بزر الماوس الأيمن على [poste de travail] على سطح المكتب، واختر الخيار [propriétés]، ثم اللوحة [Nom de l'ordinateur]:

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

عند الاطلاع على خصائص هذا الاختصار، نجد أن الهدف هو كما يلي:
يوجد في المجلد [ C:\Program Files\Microsoft SQL Server] المجلدات الفرعية التالية:

- 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]:
سنرى الآن كيفية إنشاء قواعد البيانات في خادم 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/].
يمكننا تنزيل الإصدار المجاني من خلال الرابط أعلاه:


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

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


ستظهر صفحة الخصائص التالية:
![]() |
portable1_tahe\msde140405 - اسم مثيل MSDE الذي تريد الاتصال به | |
مصادقة Windows - هذا الوضع متاح دائمًا ويسمح لمسؤول جهاز Windows بالاتصال بالخادم MSDE | |
حدد مجموعة الخوادم الوحيدة المعروضة [SQL Server Group] |
بمجرد النقر على [OK]، يتم عرض شجرة خصائص الخادم MSDE140405:

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

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

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

يجب التأكد هنا من أن وضع المصادقة لـ 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):

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

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

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

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

لنبدأ بتسجيل الخادم 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 في مستكشف قواعد البيانات:

لنستخدم الخيار [Database/Create Database] لإنشاء قاعدة بيانات:
![]() |
الخطوة 2:
عندما تظهر صفحة المعلومات هذه، يكون قد تم إنشاء قاعدة البيانات [dbarticles]. يمكن التأكد من ذلك باستخدام الزر [Test Connect]. في الحقل [Database alias]، يمكن إدخال ما تريد. هنا قمنا بتحديد:
- اسم قاعدة البيانات
- اسم الخادم MSDE الذي توجد عليه
- المستخدم [admarticles] الذي سيكون مالك هذه القاعدة وكلمة مروره [mdparticles]. لم يتم إنشاء هذا المستخدم بعد، ولكن سيتم إنشاؤه قريبًا.
الخطوة 3:
- باستخدام الزر [Register]، نقوم بتسجيل قاعدة البيانات الجديدة في [MS SQL Server ]. بعد التسجيل، تظهر قاعدة البيانات [admarticles] في قائمة قواعد البيانات. بالنقر المزدوج عليها، يتم عرض شجرة خصائصها.
![]() | ![]() |
لنقم بإنشاء حساب تسجيل دخول جديد ليكون المسؤول عن قاعدة البيانات [admarticles].
- اختر الخيار [Tools/Login manager]:

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

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

اللغة SQL الموضحة أعلاه هي Transact-SQL، ولغة SQL هي لغة MSDE. نطلب تنفيذ هذا الرمز بواسطة [OK]
- يتم إدراج اسم المستخدم الجديد في قائمة أسماء المستخدمين:

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

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

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

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

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

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

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

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

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

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

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

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

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

تتيح لنا لوحة [Checks] إضافة قيود تكامل جديدة إلى الجدول. بالنسبة للجدول [ARTICLES]، سنقوم بإنشاء القيود التالية:
- يجب أن تكون قيم الحقل [ID, PRIX, STOCKACTUEL, STOKMINIMUM] >=0
- يجب ألا يكون الحقل [NOM] فارغًا
في لوحة [Checks]، انقر بزر الماوس الأيمن على المنطقة الفارغة لإضافة قيد جديد [New check]:

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

Name: اسم القيد
الجدول: الجدول الذي يُطبق عليه القيد
التعريف: تعبير عن القيد
يتم تجميع القيد بواسطة الزر [Compile] أعلاه.
- مرة أخرى، يعرض [MS SQL Manager] الأوامر SQL التي تم تنفيذها:

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

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

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

يقدم هذا اللوحة كود 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]:

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

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

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

سنوقف عروضنا التوضيحية عند هذا الحد. يتبين أن الزوج [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]:

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

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

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

- نقوم بملء الحقول المختلفة:
اسم المصدر ODBC - يمكن أن يكون أي اسم | |
يمكن أن يكون أي اسم | |
اسم الخادم MSDE الذي يحتوي على بيانات المصدر ODBC |
- نقوم بإنشاء [Suivant] لتقديم معلومات جديدة:

- نقوم بملء الحقول المختلفة:
نحدد أننا سنتصل بمصدر البيانات ODBC باستخدام اسم مستخدم مسجل في الخادم MSDE | |
تسجيل دخول المستخدم | |
كلمة مرور المستخدم |
- يُلاحظ أننا نستخدم للمرة الأولى المستخدم (admarticles، mdparticles) الذي تم إنشاؤه في فقرة سابقة. مرة أخرى، ننفذ الأمر [Suivant] للحصول على الصفحة الجديدة التالية:

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

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

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

- نحن الآن على يقين من أن الزوج [admarticles, mdparticles] قد تم التعرف عليه.
لإجراء اختبارات إضافية، يمكن للقارئ اتباع الإجراء الموضح في الفقرة 3.10.
3.16. سلسلة الاتصال بقاعدة البيانات MSDE
- قم بتشغيل Visual Studio واطلب عرض مستكشف الخوادم [Affichage/Explorateur de serveurs]:
![]() |
- انقر بزر الماوس الأيمن على [Connexion de données] واختر الخيار [Ajouter une connexion]:

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

اسم الخادم MSDE الذي يتم الاتصال به | |
معرف الدخول المستخدم للاتصال بقاعدة البيانات | |
كلمة المرور المرتبطة بهذا المعرف | |
قاعدة البيانات التي نريد العمل معها |
يتيح الزر [Tester la connexion] التحقق من صحة المعلومات:

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

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

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

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

- تعد سلسلة الاتصال [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
تحتوي العديد من عناصر سلسلة الاتصال هذه على قيم افتراضية. يمكن الاكتفاء بسلسلة الاتصال التالية:






























