محاضرة ASP 6: ASP وقاعدة البيانات (1)
الكاتب:Eve Cole
وقت التحديث:2009-05-30 19:55:05
في المحاضرات السابقة، تعلمنا المحتوى الأساسي لـ ASP. وباستخدام هذه المعرفة بمرونة، يمكنك بالفعل استخدام ASP لإنشاء موقع ويب. ولكن بشكل عام، لا يمكن فصل موقع الويب الحقيقي والكامل عن قاعدة البيانات، لأنه يمكن تخزين كمية صغيرة من البيانات، مثل عدد زوار صفحة الويب، في ملفات نصية، ولكن في التطبيقات الفعلية، فإن البيانات التي يجب تخزينها يتم حفظها أكثر من ذلك بكثير، وغالبًا ما تكون هذه البيانات مرتبطة ببعضها البعض، ويمكن الاستعلام عن هذه البيانات وتحديثها بسهولة باستخدام قاعدة بيانات. هناك أنواع عديدة من قواعد البيانات، مثل: قاعدة بيانات Fox (.dbf)، وقاعدة بيانات Access (.mdb)، وInformix، وOracle، وSQL Server، وما إلى ذلك. في هذه المحاضرة، سأستخدم قاعدة بيانات Microsoft Access وSQL Server 7.0 كأمثلة شرح ASP كيفية الوصول إلى قاعدة البيانات. لماذا تختار ASP؟ تشير الإحصائيات إلى أن SQL Server 7.0 يعد حاليًا قاعدة البيانات الأسرع والأكثر فعالية من حيث التكلفة، ويتم إنشاء العديد من مواقع الويب الكبيرة مثل www.8848.net وwww.dell.com وwww.hotbot.com باستخدام تقنية ASP، لذا فإن ASP هو إنها تقنية سهلة الإتقان نسبيًا وعملية للغاية، ويجب عليك محاولة التعامل معها وفهمها ثم استخدامها بثقة وشجاعة.
ما هي الاستعدادات التي ينبغي اتخاذها قبل إجراء مزيد من الدراسة:
1. إذا لم تكن على اتصال بقاعدة بيانات من قبل، فمن المستحسن تثبيت Microsoft Access في Office أولاً وتعلم المعرفة الأساسية بقواعد البيانات.
2. من الأفضل تثبيت Microsoft SQL Server 7.0. بمجرد التثبيت، يمكن استخدامه على الفور دون أي إعدادات. لاحظ أنه يجب تثبيت إصدار DeskTop في Windows 9.x، بينما يمكن تثبيت الإصدارات قبل 7.0 فقط في NT Server.
3. يتطلب المحتوى الذي تمت مناقشته بعد ذلك مكونًا يسمى MDAC (مكونات الوصول إلى بيانات Microsoft). هذا المكون مضمن بالفعل في ASP. إذا كنت تريد معرفة المزيد حول المحتوى ذي الصلة، أو تنزيل أحدث إصدار، فيمكنك زيارة http://www. microsoft.com/data.
1. إنشاء اتصال بقاعدة البيانات قبل البدء رسميًا، اسمحوا لي بتقديم ADO - كائنات بيانات ActiveX إذا كنت جديدًا على هذا المفهوم، فما عليك سوى التفكير في ADO كجسر بين ASP وقاعدة البيانات.
(1) الطريقة الأولى لتأسيس اتصال بقاعدة بيانات Microsoft Access: مثال wuf40.asp
<% @LANGUAGE = VBScript %>
<%' wuf40.asp
الخيار صريح
ديم سي إن إن، ستركن
'1 - إنشاء كائن اتصال
تعيين Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("asp") & "NorthWind.mdb;"
'2 - افتح قاعدة البيانات باستخدام الأسلوب المفتوح لكائن الاتصال
Cnn.افتح StrCnn
Response.Write Server.MapPath("asp") & "NorthWind.mdb;"
Response.Write "تم الاتصال بقاعدة البيانات بنجاح: " & Cnn.State & "<br>"
'3 - قم بإغلاق الاتصال باستخدام أسلوب الإغلاق الخاص بكائن الاتصال
سي إن إن إغلاق
Response.Write "تم إغلاق قاعدة البيانات:" & Cnn.State
'4 - احذف كائن الاتصال من الذاكرة لتحرير الموارد
تعيين سي إن إن = لا شيء
%>
Northwind.mdb هي قاعدة بيانات نموذجية تأتي مع Microsoft Access97 وهي موجودة عادةً في الدليل "Microsoft OfficeOfficeSamples". على سبيل المثال، ضعه في C :InetPubhomeasp).
هنا، يقوم أسلوب MapPath الخاص بكائن الخادم بتحويل المسار الظاهري المحدد إلى مسار ملف حقيقي، وتكون النتيجة النهائية مشابهة لما يلي: C:InetPubhomeaspNorthwind.mdb.
الطريقة الثانية: استخدم OLE DB لإنشاء اتصال Microsoft Access. الأجزاء الرئيسية مذكورة أدناه.
تعيين Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "الموفر = Microsoft.Jet.OLEDB.4.0؛ مصدر البيانات = C:InetpubhomeaspNorthwind.mdb"
Cnn.افتح StrCnn
(2) الطريقة الأولى لتأسيس اتصال بقاعدة بيانات SQL Server: استخدم OLE DB للاتصال بـ SQL Server للحصول على التفاصيل، راجع wuf41.asp الروتيني.
تعيين Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "الموفر=sqloledb؛ معرف المستخدم=sa؛ كلمة المرور=؛ الكتالوج الأولي=الناشرون؛ مصدر البيانات=ICBCZJP"
Cnn.افتح StrCnn
حدد اسم قاعدة البيانات بعد الكتالوج الأولي، واسم الجهاز بعد مصدر البيانات (أي اسم الكمبيوتر في الشبكة → الخصائص → الهوية) أو عنوان IP (يلزم تثبيت خدمة DNS).
الطريقة الثانية:
تعيين Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "برنامج التشغيل={SQL Server};الخادم=ICBCZJP;UID=sa;PWD=;قاعدة البيانات=الناشرين"
Cnn.افتح StrCnn
بالإضافة إلى الطريقتين المذكورتين أعلاه، بالطبع يمكنك أيضًا استخدام الطريقة الأكثر كلاسيكية التي تم تقديمها في العديد من المقالات والمواد: استخدام ODBC لإنشاء اتصال. وهذا يعني أولاً إنشاء اتصال في "مصادر بيانات ODBC" في لوحة تحكم خادم الويب، ثم استخدام سلسلة اتصال مشابهة لـ "StrCnn ="DSN=ADOCnn; UID = sa;PWD=;Database=pubs"" في ASP . لن أعرضها بالتفصيل هنا أولاً، هذه ليست الطريقة الأفضل ثانياً، لقد قدمت مواد أخرى هذه الطريقة.
بالإضافة إلى ذلك، إذا كنت مهتمًا، يمكنك تنزيل الروتين wuf42.asp لمعرفة كيفية استخدام خصائص ConnectionTimeout وConnectionString لكائن الاتصال.
2. تبدأ قاعدة البيانات هنا - استرداد البيانات الموجودة بالفعل في قاعدة البيانات، ومن المفترض الآن أن لديك بالفعل المعرفة الأساسية بقاعدة البيانات وتعرف كيفية استخدام Microsoft Access لفتح جدول "Shipper" في Northwind.mdb والاطلاع عليه. البيانات المخزنة في الجدول بضع قطع من البيانات. والسؤال المطروح الآن هو كيفية استخدام ASP لعرض هذه البيانات في المتصفح، وإليك ثلاث طرق.
تذكير خاص: إذا كان أساس قاعدة بياناتك ضعيفًا، فأنت تحتاج فقط إلى أن تكون قادرًا على استخدام الطريقة الثانية، ولا تكن جشعًا لتجنب المبالغة في ذلك، لذا تذكر! يتذكر!
الطريقة الأولى: استخدم كائن الاتصال فقط. مثال wuf43.asp
<% @LANGUAGE = VBScript %>
<%' wuf43.asp
الخيار صريح
'هذه الجملة مهمة جدًا، فهي تضمن أن البيانات التي تراها ليست هي البيانات المخزنة مؤقتًا على العميل.
'ولكن يتم تحديث أحدث البيانات في أي وقت من جانب الخادم
الاستجابة.انتهاء الصلاحية = 0
'الجزء الأول: إنشاء اتصال
ديم سي إن إن، ستركن
تعيين Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "الموفر = Microsoft.Jet.OLEDB.4.0؛ مصدر البيانات = C:InetpubhomeaspNorthwind.mdb"
Cnn.افتح StrCnn
'الجزء 2: استخدم أسلوب التنفيذ لكائن الاتصال للحصول على مجموعة السجلات
خافت StrSQL، rsTest
"ما يلي هو عبارة SQL (بيان استعلام منظم)، والتي لن يتم تقديمها بالتفصيل في هذه المحاضرة." يوصى بقراءة هذا الكتاب الاستخدام الأساسي بسيط نسبيًا، ويمكنك تعلمه بمجرد تعلمه.
'تعني هذه الجملة تحديد كافة البيانات من الجدول الناقل
StrSQL = "اختر * من الشاحن"
تعيين rsTest = Cnn.Execute(StrSQL)
%>
<أتش تي أم أل>
<الجسم>
<% 'الجزء 3: عرض مجموعة السجلات التي تم الحصول عليها على المتصفح
'حلقة حتى نهاية السجل - عرض سطرًا تلو الآخر، سجلًا تلو الآخر
افعل بينما لا rsTest.EOF
'السطران التاليان لهما نفس التأثير، أي أن rsTest("معرف الشاحن") يعادل rsTest(0)
Response.Write rsTest("معرف الشاحن") & " " & rsTest("اسم الشركة") & " " & rsTest("الهاتف") & " " & "<BR>"
'Response.Write rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"
"الانتقال إلى السجل التالي - لا يجب حذف هذه الجملة، وإلا فإنها ستقع في حلقة لا نهائية."
rsTest.MoveNext
حلقة
'الجزء الرابع: تنظيف ساحة المعركة
سي إن إن إغلاق
تعيين rsTest = لا شيء: تعيين Cnn = لا شيء
%>
</الجسم>
</HTML>
هذا المثال بسيط للغاية. الجزء الثالث يعرض البيانات بأسلوب الإخراج النموذجي لقاعدة البيانات. يمكنك الرجوع إلى المعرفة التي تعلمتها من قبل وإضافة الجداول والألوان لتجميل نتائج الإخراج.
يمكن للمستخدمين غير المبتدئين الرجوع إلى wuf44.asp لرؤية الاستخدام الكامل لأسلوب التنفيذ.
الطريقة الثانية: عن طريق إنشاء كائن Recordset - تذكر أن المبتدئين يحتاجون فقط إلى إتقان هذه الطريقة.
مثال: wuf45.asp، الأجزاء الأخرى هي نفس wuf43.asp، المفتاح يكمن في الجزء الثاني من البرنامج.
'الجزء 2: الحصول على مجموعة السجلات عن طريق إنشاء كائن مجموعة السجلات
خافت StrSQL، rsTest
"إنشاء كائن مجموعة السجلات."
تعيين rsTest = Server.CreateObject("ADODB.Recordset")
StrSQL = "حدد معرف شركة الاتصالات ورقم الهاتف واسم الشركة من شركة الاتصالات حيث رقم الهاتف = '(503) 555-9931'"
'قم بإرفاق كائن مجموعة السجلات بالاتصال Cnn
تعيين rsTest.ActiveConnection = Cnn
'افتح مجموعة السجلات باستخدام الأسلوب Open لكائن Recordset
rsTest.Open StrSQL
الآن دعونا نلقي نظرة على الاستخدام الكامل للأسلوب Open لكائن Recordset، على سبيل المثال wuf48.asp.
<% @LANGUAGE = VBScript %>
<%' wuf48.asp
الخيار صريح
الاستجابة.انتهاء الصلاحية = 0
%>
<!--#include file="adovbs.inc"-->
<%
'الجزء الأول: إنشاء اتصال
ديم سي إن إن، ستركن
تعيين Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "الموفر = Microsoft.Jet.OLEDB.4.0؛ مصدر البيانات = C:InetpubhomeaspNorthwind.mdb"
Cnn.افتح StrCnn
'الجزء 2: الحصول على مجموعة السجلات عن طريق إنشاء كائن مجموعة السجلات
خافت rsTest
تعيين rsTest = Server.CreateObject("ADODB.Recordset")
rsTest.Open "Shipper"، CNN، adOpenForwardOnly، adLockReadOnly، adCmdTable
%>
<أتش تي أم أل>
<الجسم>
<% 'الجزء 3: عرض مجموعة السجلات التي تم الحصول عليها على المتصفح
افعل بينما لا rsTest.EOF
الاستجابة.اكتب rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "<BR>"
rsTest.MoveNext
حلقة
'الجزء الرابع: تنظيف ساحة المعركة
rsTest.Close: Cnn.Close
تعيين rsTest = لا شيء: تعيين Cnn = لا شيء
%>
</الجسم>
</HTML>
تحليل:
1. نظرة أولى على الجمل الرئيسية:
rsTest.Open "Shipper"، CNN، adOpenForwardOnly، adLockReadOnly، adCmdTable
يمكن أن تكون المعلمة الأولى اسم جدول (مثل: وكيل الشحن) أو عبارة SQL (مثل wuf45.asp).
تحدد المعلمة الثانية الاتصال الحالي.
تشير المعلمة الثالثة إلى CursorType، الذي يحدد نوع المؤشر الذي يجب أن يستخدمه الموفر عند فتح مجموعة السجلات. يستخدم هذا المؤشر الذي يتحرك للأمام فقط.
تشير المعلمة الرابعة إلى LockType، الذي يحدد نوع القفل (التزامن) الذي يجب أن يستخدمه الموفر عند فتح مجموعة السجلات. حدد للقراءة فقط هنا.
المعلمة الخامسة مرتبطة بالمعلمة الأولى إذا كانت المعلمة الأولى في هذا المثال هي اسم الجدول، فإن المعلمة الخامسة تستخدم adCmdTable. إذا كانت المعلمة الأولى عبارة عن عبارة SQL، فإن المعلمة الأولى هي adCmdText، مثل:
rsTest.Open "اختر * من الناقل"،Cnn،adOpenForwardOnly،adLockReadOnly،adCmdText
لا أعتقد أن معظم الناس يمكنهم حقًا فهم معنى هذه المعلمات الخمس. في البداية، ما عليك سوى نسخها واستخدامها في المستقبل مثالية كما اعتدنا عليهم.
سيتم شرح المعلمتين CursorType وLockType بالتفصيل أدناه فقط لاستعادة البيانات، ما عليك سوى تعيينهما وفقًا لهذا المثال.
2. يمكن أيضًا تعيين هذه المعلمات الخمس باستخدام خصائص كائن Recordset، مثل wuf46.asp.
'الجزء 2: الحصول على مجموعة السجلات عن طريق إنشاء كائن مجموعة السجلات
خافت rsTest
تعيين rsTest = Server.CreateObject("ADODB.Recordset")
rsTest.ActiveConnection = Cnn
rsTest.CursorType = adOpenForwardOnly
rsTest.LockType = adLockReadOnly
rsTest.Open "Shipper" و، و، وadCmdTable
3. انظر إلى هذه الجملة مرة أخرى: <!--#include file="adovbs.inc"-->.
(1) نظرًا لاستخدام ثوابت مثل adOpenForwardOnly، وadLockReadOnly، وadCmdText، يجب تضمين الملف adovbs.inc.
(2) يوجد ملف adovbs.inc بشكل عام في الدليل Program FilesCommon FilesSYSTEMADO. ويمكنك نسخه إلى الدليل الحالي لخادم الويب (يتم تضمين هذا الملف أيضًا في حزمة التنزيل لهذه المحاضرة). .
(3) افتح هذا الملف باستخدام برنامج "المفكرة" وألق نظرة عليه، وسوف تفهم سبب الحاجة إلى هذا الملف.
الطريقة الثالثة: من خلال تقديم كائن الأمر - يجب دراسة ذلك على أساس أنك قادر.
<% @LANGUAGE = VBScript %>
<%' wuf47.asp
الخيار صريح
الاستجابة.انتهاء الصلاحية = 0
%>
<!--#include file="adovbs.inc"-->
<%
'الجزء الأول: إنشاء اتصال
ديم سي إن إن، ستركن
تعيين Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "الموفر = Microsoft.Jet.OLEDB.4.0؛ مصدر البيانات = C:InetpubhomeaspNorthwind.mdb"
Cnn.افتح StrCnn
'الجزء 2: الحصول على مجموعة السجلات عن طريق إنشاء كائن أمر
خافت StrSQL، rsTest، cmdTest
"إنشاء كائن أمر."
تعيين cmdTest = Server.CreateObject("ADODB.Command")
StrSQL = "حدد الحد الأقصى (الكمية) من تفاصيل الطلب"
cmdTest.CommandText = StrSQL
cmdTest.CommandType = adCmdText 'يشير إلى أن نوع الأمر عبارة عن عبارة SQL
تعيين cmdTest.ActiveConnection = Cnn
'استخدم طريقة التنفيذ لكائن الأمر للحصول على مجموعة السجلات.
قم بتعيين rsTest = cmdTest.Execute
%>
<أتش تي أم أل>
<الجسم>
<% 'الجزء 3: عرض مجموعة السجلات التي تم الحصول عليها على المتصفح
افعل بينما لا rsTest.EOF
الاستجابة.اكتب rsTest(0) و"<BR>"
rsTest.MoveNext
حلقة
'الجزء الرابع: تنظيف ساحة المعركة
rsTest.Close: Cnn.Close
تعيين rsTest = لا شيء: تعيين cmdTest = لا شيء: تعيين Cnn = لا شيء
%>
</الجسم>
</HTML>
سيتم شرح استخدام كائن Command في البرمجة المتعمقة لقاعدة البيانات في المستقبل.
تقدم هذه المحاضرة بشكل أساسي كيفية الاتصال بقاعدة البيانات واسترداد بيانات قاعدة البيانات، ومن المؤكد أن المبتدئين سيكونون في حيرة من أمرهم، وتذكر أنك تحتاج فقط إلى تعلم نقاط المعرفة التالية:
1. كيفية استخدام OLE DB لتأسيس اتصال بقاعدة بيانات Microsoft Access؛
2. كيفية استخدام OLE DB لتأسيس اتصال بقاعدة بيانات Microsoft SQL Server؛
3. كيفية استرداد البيانات من قاعدة البيانات عن طريق إنشاء كائن Recordset.