موصى به: استخدم ASP لاتصال طرق العرض والإجراءات المخزنة في قاعدة البيانات 1. مقدمة ASP (صفحات الخادم النشط) هي بيئة نصية من جانب الخادم ، والتي تدعمها IIS3.0 من Microsoft أو أعلى. يمكن استخدامه لإنشاء صفحات ويب ديناميكية أو لإنشاء تطبيقات ويب قوية. تتضمن صفحات ASP علامات HTML والنص و
ما هو عرض ترقيم الصفحات عندما يصل ADO إلى قواعد البيانات؟ إذا كنت قد استخدمت برنامج لوحة الإعلانات الإلكترونية على العديد من مواقع الويب في الوقت الحاضر ، فيجب أن تعلم أنه من أجل تحسين سرعة قراءة الصفحة ، لا يسرد برنامج لوحة الإعلانات الإلكترونية عمومًا جميع المنشورات في صفحة واحدة ، ولكنه يقسمها إلى صفحات متعددة لعرض عدد معين من المنشورات لكل صفحة ، مثل 20 منشورًا. هذا هو عرض ترقيم الصفحات لاستفسارات قاعدة البيانات. إذا لم تفهمها بعد ، فسوف تفهمها من خلال النظر إلى نتائج الاستعلام لمحركات البحث مثل Yahoo.
فكيف يمكننا تراجع نتائج الاستعلام لقاعدة البيانات؟ هناك بالفعل العديد من الطرق ، ولكن هناك طريقتان رئيسيتان:
1. اقرأ جميع السجلات في قاعدة البيانات التي تلبي شروط الاستعلام في مجموعة السجلات في وقت واحد وتخزينها في الذاكرة. ثم إدارة معالجة الترحيل من خلال عدة سمات توفرها كائن سجل ADO الذي يدعم بالتحديد معالجة الترحيل: Pagesize (حجم الصفحة) ، PageCount (رقم الصفحة) و Absolutepage (الصفحات المطلقة).
2. وفقًا لتعليمات العميل ، يجب قراءة العدد المحدد من السجلات وعرضه من السجلات التي تلبي شروط الاستعلام في كل مرة.
الفرق الرئيسي بين الاثنين هو أن السابق يقرأ جميع السجلات في الذاكرة في وقت واحد ، ثم يصدر الأحكام والتحليل بالتسلسل وفقًا للتعليمات لتحقيق تأثير عرض الصفوف ، في حين أن الأخير يصدر الأحكام بناءً على التعليمات ويقرأ عدد السجلات المحددة التي تلبي شروط الاستعلام في الذاكرة ، مما يحقق مباشرة وظيفة العرض.
يمكننا أن نشعر بوضوح أنه عندما يصل عدد السجلات في قاعدة البيانات إلى عشرات الآلاف أو أكثر ، فإن كفاءة التنفيذ للطريقة الأولى ستكون أقل بكثير من الطريقة الثانية ، لأنه عندما يتم تنفيذ كل عميل من الصفحة ، يجب تخزين جميع السجلات التي تفي بالمعايير في ذاكرة الخادم ، ثم يتم تنفيذ عملية الترحيل وغيرها من المعالجة. إذا استفسر أكثر من 100 عميل عبر الإنترنت في نفس الوقت ، فستتأثر كفاءة تنفيذ تطبيق ASP بشكل كبير. ومع ذلك ، عندما لا يكون عدد السجلات على الخادم وعدد الأشخاص عبر الإنترنت في نفس الوقت كبيرًا جدًا ، فإن كفاءة تنفيذ الاثنين هي نفسها تقريبًا. في هذا الوقت ، يتم اعتماد الطريقة الأولى عمومًا ، لأن كتابة برنامج ASP للطريقة الأولى أبسط وأكثر وضوحًا من الطريقة الثانية.
هنا ، سيأخذ المؤلف برنامج ASP BBS المشترك كمثال لتحليل كيفية تنفيذ وظيفة عرض ترقيم الصفحات في برنامج BBS. نظرًا لأن عدد سجلات قاعدة البيانات وعدد الأشخاص الذين يصلون في وقت واحد في برنامج BBS الذي نستخدمه عمومًا ليسوا أكثر من اللازم ، وبالتالي فإن أمثلة البرنامج التالية هي أول طريقة عرض ترقيم الصفحات تم تقديمها مسبقًا.
عرض ترقيم الصفحات عندما يصل ADO إلى قاعدة البيانات في الواقع لتشغيل سجلات مجموعة السجلات. لذلك يجب أن نفهم أولاً خصائص وطرق كائن ReordSet:
سمة BOF: يشير المؤشر الحالي إلى المعاملة الأولى إلى مجموعة السجلات.
سمة EOF: يشير المؤشر الحالي إلى المعاملة الأخيرة إلى مجموعة السجلات.
Move Method: انقل المقاييس إلى سجل في مجموعة السجلات.
خاصية Abssolbage: يعين الموقع الحالي للسجل الذي يقع فيه الصفحة. خاصية الإشارة المطلقة: الموقع الحالي للمقياس في مجموعة السجلات.
PageCount Property: يعرض عدد صفحات البيانات التي يحتوي عليها كائن مجموعة السجلات.
Pagesize Property: يعرض عدد السجلات المعروضة في كل صفحة من كائن مجموعة السجلات.
خاصية RecordCount: يعرض إجمالي عدد السجلات لكائن مجموعة السجلات.
دعونا نلقي نظرة فاحصة على هذه السمات والأساليب المهمة.
1. سمات BOF و EOF
عادةً ما نكتب رمزًا في برنامج ASP للتحقق من سمات BOF و EOF لمعرفة موقع مجموعة السجلات التي يشير إليها المؤشر الحالي. باستخدام سمات BOF و EOF ، يمكننا معرفة ما إذا كان كائن مجموعة السجل يحتوي على سجلات أو ما إذا كان خط السجل المتحرك قد تجاوز نطاق كائن مجموعة السجلات.
يحب:
<٪ إذا لم يكن rs.eof ثم ... ٪>
<٪ إذا لم يكن (rs.bof و rs.eof) ٪>
إذا كان موضع السجل الحالي هو قبل الصف الأول من كائن مجموعة السجلات ، فإن خاصية BOF تُرجع صحيحًا ، وإلا فإنها تُرجع.
إذا كان موضع السجل الحالي هو بعد الصف الأخير من كائن مجموعة السجلات ، فإن خاصية EOF تُرجع صحيحًا ، وإلا فإنها تُرجع.
كل من BOF و EOF خاطئة: يعني أن المؤشر موجود في مجموعة السجلات.
BOF صحيح: يشير المؤشر الحالي إلى السجل الأول إلى مجموعة السجلات. EOF صحيح: يشير المؤشر الحالي إلى السجل الأخير إلى مجموعة السجلات.
كل من BOF و EOF صحيحان: لا يوجد سجل في مجموعة السجلات.
2. نقل طريقة
يمكنك استخدام طريقة الحركة لنقل المقاييس إلى سجل في مجموعة السجلات ، مع بناء الجملة كما يلي:
Rs.Move numRecords ، ابدأ
هنا RS هو متغير كائن ، يشير إلى كائن مجموعة سجلات يريد التحرك عندما يكون موضع السجل الحالي ؛ NumRecords هي صيغة حسابية إيجابية وسلبية تحدد عدد حركات موضع السجل الحالي ؛ START هو عنصر اختياري لتحديد الملصق لبدء السجل.
تدعم جميع كائنات السجلات طريقة التحرك. إذا كانت المعلمة numRecords أكبر من الصفر ، فإن موضع السجل الحالي ينتقل إلى النهاية ؛ إذا كان أقل من الصفر ، ينتقل موضع السجل الحالي إلى البداية ؛ إذا استدعى كائن مجموعة سجلات فارغة طريقة التحرك ، فسيتم إنشاء خطأ.
MoveFirst طريقة: انقل موضع السجل الحالي إلى السجل الأول.
طريقة movelast: انقل موضع السجل الحالي إلى السجل الأخير.
طريقة movenext: انقل موضع السجل الحالي إلى السجل التالي. MovePrevious Method: انقل موضع السجل الحالي إلى السجل السابق.
نقل [n] الطريقة: انقل الفهرس إلى سجل القلم التاسع ، يبدأ n من 0.
3. سمات المطلقة
تقوم خاصية Absollingpage بتعيين رقم صفحة الصفحات التي يوجد بها السجل الحالي ؛ استخدم الخاصية Pagesize لتقسيم كائن مجموعة السجلات إلى صفحات منطقية ، وعدد السجلات لكل صفحة هو pagesize (باستثناء الصفحة الأخيرة التي قد تحتوي على سجلات أقل من Pagesize). تجدر الإشارة هنا إلى أنه لا يدعم جميع مزودي البيانات هذه الخاصية ، لذا كن حذرًا عند استخدامها.
نفس خاصية الإشارة المطلقة ، تبدأ خاصية AbsolutePage بـ 1. إذا كان السجل الحالي هو الصف الأول من مجموعة السجلات ، فإن المطلقة هي 1. يمكن تعيين خاصية Abssolbage للانتقال إلى موضع سجل الصف الأول في صفحة محددة.
4. الممتلكات المطلقة
إذا كنت بحاجة إلى تحديد الموقع الحالي للمقياس في مجموعة السجلات ، فيمكنك استخدام خاصية الإبلاغ المطلقة.
قيمة خاصية الإبلاغ المطلقة هي موضع المؤشر الحالي بالنسبة للمعاملة الأولى ، التي تبدأ من 1 ، أي أن المطلقة للمعاملة الأولى هي 1.
لاحظ أنه عند الوصول إلى Records ، لا يوجد ضمان بأن المسلسلات سوف تظهر في نفس الترتيب في كل مرة.
لتمكين الإشارة المطلقة ، يجب عليك أولاً تعيينه لاستخدام مؤشر المستخدم (مؤشر) ، ورمز ASP كما يلي:
rs2.cursorlocation = 3
5. PageCount Property
استخدم خاصية PageCount لتحديد عدد صفحات البيانات التي يحتوي عليها كائن مجموعة السجل. الصفحة هنا هي مجموعة من سجلات البيانات ، وحجمها يساوي إعداد خاصية Pagesize. حتى إذا كان عدد السجلات في الصفحة الأخيرة أقل من قيمة Pagesize ، فإن الصفحة الأخيرة تعتبر صفحة من PageCount. تجدر الإشارة إلى أن جميع مقدمي البيانات لا يدعمون هذه الخاصية.
6. صياغة السمة
الخاصية Pagesize هي المفتاح لتحديد كيفية ترشيد ADO عند الوصول إلى قواعد البيانات. باستخدامه ، يمكنك تحديد عدد السجلات التي تشكل صفحة منطقية. يقوم بتعيين حجم الصفحة وإنشائه ، مما يسمح بنقل خاصية Absolutepage إلى السجل الأول للصفحات المنطقية الأخرى. يمكن تعيين خاصية Pagesize في أي وقت.
7
هذه أيضًا خاصية شائعة ومهمة للغاية. غالبًا ما نستخدم خاصية RecordCount لمعرفة عدد السجلات التي يحتوي عليها كائن مجموعة السجلات. على سبيل المثال: <٪ totle = rs.recordCount ٪> بعد فهم الخصائص وطرق كائن مجموعة السجلات المذكورة أعلاه ، دعنا نفكر في كيفية استخدامها لتحقيق الغرض من عرض ترقيم الصفحات لدينا. أولاً ، يمكننا تعيين قيمة لخاصية Pagesize ، وبالتالي تحديد عدد الصفوف التي تشكل صفحة مأخوذة من مجموعة السجلات ؛ ثم استخدم خاصية RecordCount لتحديد إجمالي عدد السجلات ؛ ثم قسّم إجمالي عدد السجلات حسب Pagesize للحصول على إجمالي عدد الصفحات المعروضة ؛ أخيرًا ، يمكن إكمال الوصول إلى الصفحات المحددة من خلال خاصية Abssolbage. يبدو ليس معقدا جدا. دعونا نلقي نظرة على كيفية تنفيذ البرنامج؟
لقد قمنا ببناء تطبيق BBS بسيط ، والذي يحتوي على الحقول الخمسة التالية في قاعدة البيانات الخاصة به: ID ، العدد التلقائي لكل منشور ؛ موضوع ، موضوع كل منشور ؛ الاسم ، اسم المستخدم الذي أضاف المنشور ؛ البريد الإلكتروني ، عنوان البريد الإلكتروني للمستخدم ؛ postdate ، وقت إضافة المنشور. DSN من قاعدة البيانات هي BBS. وضعنا جميع الخطوات في عرض ما بعد الترحيل في عملية تسمى showlist () لسهولة الاتصال. الإجراء كما يلي:
| ما يلي هو المحتوى المقتبس: /'---- BBS عرض بعد الترحيل ---- <٪ show showlist () ٪> <٪ PGSZ = 20 /'SET SWIND ، حدد عدد المنشورات المعروضة في كل صفحة ، الافتراضي هو 20 منشورًا لكل صفحة تعيين conn = server.createBject (adodb.connection) تعيين rs = server.createBject (adodb.recordset) SQL = حدد * من ترتيب الرسائل حسب ID DESC /'الاستعلام عن جميع المنشورات وترتيبها بترتيب عكسي حسب المعرف Conn.Open BBS Rs.Open SQL ، Conn ، 1،1 إذا كان rs.recordCount = 0 ثم استجابة. write <p> <center> آسف ، لا توجد معلومات ذات صلة في قاعدة البيانات! </center> </p> آخر rs.pagesize = cint (pgsz) /'اضبط قيمة خاصية Pagesize TOTAL = int (RS.RECORDCOUNT / PGSZ * -1) * -1 / 'احسب إجمالي عدد الصفحات التي يمكن عرضها Pageno = طلب (Pageno) إذا pageno = ثم Pageno = 1 آخر Pageno = Pageno 1 Pageno = Pageno-1 إنهاء إذا ScrollAck = request (ScrollAct) إذا تم التمرير = الصفحة السابقة ثم Pageno = Pageno-1 إنهاء إذا إذا تم التمرير = الصفحة التالية ثم Pageno = Pageno 1 إنهاء إذا إذا كان Pageno <1 ثم Pageno = 1 إنهاء إذا ن = 1 rs.absolutepage = pageno استجابة. write <centre> الموضع = rs.pagesize*pageno pageBegin = position-rs.pagesize 1 إذا كان الموقف <rs.ReCordCount ثم PAGEND = الموقف آخر PAGEND = RS.RECORDCOUNT إنهاء إذا Response.write <p> <font color =/'navy/'> <b> نتائج استعلام قاعدة البيانات: </b> استجابة. write (هناك ما مجموعه و rs.recordcount وقطع المعلومات التي تلبي الشروط والعرض و pageBegin &-& pagend &) < /font> </p> استجابة. write <عرض الجدول = 600 الحدود = 1 cellpadding = 4 cellpacing = 0 bgColor =#ffffff> استجابة. write <tr bgcolor =#5fb5e2> <font size = 2> <td> <b> الموضوع </b> </td> <td> <b> المستخدم </b> </td> <td> <b> البريد الإلكتروني < /b> افعل بينما لا (RS ليس شيئًا) rowcount = rs.pagesize افعل بينما لا Rs.eof و rowcount> 0 إذا n = 1 ثم استجابة. write <tr bgcolor =#ffffff> آخر استجابة. write <tr bgcolor =#eeeeee> إنهاء إذا n = 1-n ٪> <td> <span style = font-size: 9pt> <a href = /'view.asp؟ key = <٪ = rs (id) ٪> /'> <٪ = rs (موضوع) ٪> < /a> </span> < /td> <td> <span style = font-size: 9pt> <٪ = rs (name) ٪> </a> </span> </td> <td> <span style = font-size: 9pt> <a href = mailto: <٪ = rs (email) ٪ >> <٪ = rs (البريد الإلكتروني) ٪> < /a> </span> </td> <td> <span style = font-size: 9pt> <٪ = rs (postdate) ٪> </span> </td> </r> <٪ rowcount = rowcount - 1 Rs.Movenext حلقة تعيين RS = rs.nextrecordset حلقة conn.close تعيين روبية = لا شيء تعيين conn = لا شيء ٪> < /table> <method method = get action = list.asp> <نوع الإدخال = الاسم المخفي = pageno value = <٪ = pageno ٪ >> <٪ إذا pageno> 1 ثم استجابة. write <input type = product name =/'scrollAct/' value =/'page/'>>> إنهاء إذا إذا كان rowcount = 0 و pageno <> المجموع ثم استجابة. write <input type = product name =/'scrollact/' value =/'page/'>> إنهاء إذا استجابة. write < /form> إنهاء إذا ٪> <٪ end sub> |
أعتقد أن الجميع يجب أن يكونوا قادرين على فهم البرنامج أعلاه تمامًا ، لذلك لن يشرح المؤلف ذلك بالتفصيل هنا. تجدر الإشارة إلى أنه تم استخدام خدعة صغيرة في هذا البرنامج ، <type type = hidden name = pageno value = <٪ = pageno ٪ >> ، وهو ممر سري يستخدم لتمرير البيانات في كل مرة يتم فيها استدعاء ملف ASP. نظرًا لأننا بحاجة إلى تمرير معلمات تمثل رقم الصفحة الحالي في كل مرة يتم فيها استدعاء البرنامج ، فقد تفكر في استخدام الجلسة ، ولكن من حيث توفير موارد النظام والعالمية ، باستخدام هذا النموذج المخفي لتمرير البيانات سيحقق نتائج أفضل.
حسنًا ، لقد حان الوقت ليقول وداعًا مرة أخرى. إذا كنت لا تفهم تمامًا البرامج المدرجة في هذه المقالة ، فيجب عليك إضافة بعض الوقود إلى قواعد VBScript ؛ إذا كان لديك بعض الأسئلة ، يمكنني بذل قصارى جهدي للإجابة عليها ؛ إذا كان لديك أي اقتراحات أفضل ، فالرجاء إرسال خطاب لي.
المشاركة: إنشاء صفحات ويب ثابتة عن طريق استبدال العلامات يعلم الجميع أن صفحات الويب الثابتة HTML من المرجح أن يتم فهرستها بواسطة محركات البحث. يمكن أن يؤدي إنشاء صفحات الويب HTML بشكل ديناميكي أيضًا إلى زيادة عدد صفحات الويب على الموقع ، وقد تتضمن محركات البحث أيضًا المزيد. ما هي الهدف من تحسين جودة صفحات الويب؟ أعتقد أن الجميع يعرف ذلك أيضًا. ل