سلسلة محاضرات ASP (16) الوصول إلى قاعدة البيانات
الكاتب:Eve Cole
وقت التحديث:2009-05-30 19:58:46
تعد كائنات بيانات ActiveX (ADO) تقنية سهلة الاستخدام وقابلة للتوسيع لإضافة إمكانية الوصول إلى قاعدة البيانات إلى صفحات الويب. يمكنك استخدام ADO لكتابة برامج نصية مضغوطة وموجزة للاتصال بقواعد البيانات المتوافقة مع اتصال قواعد البيانات المفتوح (ODBC) ومصادر البيانات المتوافقة مع OLE DB. إذا كنت مبرمجًا ولديك بعض المعرفة باتصالات قاعدة البيانات، فستجد أن عبارات أوامر ADO ليست معقدة ويسهل إتقانها. وبالمثل، إذا كنت من مبرمجي قواعد البيانات ذوي الخبرة، فسوف تقدر قدرات ADO المتقدمة في استقلال اللغة ومعالجة الاستعلامات.
إنشاء ملف ODBC DSN قبل إنشاء البرنامج النصي لقاعدة البيانات، يجب عليك توفير طريقة لـ ADO لتحديد موقع قاعدة البيانات والتعرف عليها والتواصل معها. يستخدم برنامج تشغيل قاعدة البيانات اسم مصدر البيانات (DSN) لتحديد موقع قاعدة بيانات متوافقة مع ODBC وتحديدها لتمرير المعلومات من تطبيق الويب إلى قاعدة البيانات. عادةً، يحتوي DSN على تكوين قاعدة البيانات وأمان المستخدم ومعلومات الموقع، ويمكن الحصول عليه كجدول في مفتاح تسجيل Windows NT أو كملف نصي.
باستخدام ODBC، يمكنك اختيار نوع DSN الذي تريد إنشاءه: المستخدم أو النظام أو الملف. يتم تخزين DSNs للمستخدم والنظام في سجل Windows NT. يسمح DSN للنظام لجميع المستخدمين الذين قاموا بتسجيل الدخول إلى خادم معين بالوصول إلى قاعدة البيانات، بينما يقوم DSN المستخدم بتقييد اتصالات قاعدة البيانات بمستخدمين محددين باستخدام بيانات اعتماد الأمان المناسبة. يتم استخدام ملف DSN للحصول على الجداول من الملفات النصية، ويوفر الوصول إلى العديد من المستخدمين، ويمكن نقله بسهولة من خادم إلى آخر عن طريق نسخ ملف DSN. لهذه الأسباب، تستخدم الأمثلة الموجودة في هذا الموضوع أسماء DSN للملفات.
يمكنك إنشاء ملفات مستندة إلى DSN عن طريق فتح "لوحة التحكم" من قائمة "ابدأ" في نظام التشغيل Windows. انقر نقرًا مزدوجًا فوق رمز ODBC، وحدد صفحة خصائص ملف DSN، وانقر فوق إضافة، وحدد برنامج تشغيل قاعدة البيانات، ثم انقر فوق التالي. اتبع الإرشادات أدناه لتكوين DSN لبرنامج قاعدة البيانات الخاصة بك.
تكوين ملف DSN لقاعدة بيانات Microsoft Access
في مربع الحوار إنشاء مصدر بيانات جديد، حدد Microsoft Access Driver من مربع القائمة، ثم انقر فوق التالي.
اكتب اسم ملف DSN الخاص بك وانقر فوق "التالي".
انقر فوق "إنهاء" لإنشاء مصدر البيانات.
في مربع الحوار إعداد ODBC Microsoft Access 97، انقر فوق تحديد. حدد ملف قاعدة بيانات Microsoft Access (*.mdb) ثم انقر فوق "موافق".
ملاحظة: لأسباب تتعلق بالأداء والموثوقية، نوصي بشدة باستخدام مشغل قاعدة بيانات Client-Server لتكوين البيانات التي تعتمد على تطبيقات الويب التي يجب أن تكون متاحة لأكثر من 10 مستخدمين في وقت واحد. على الرغم من أن ASP يمكنه استخدام أي قاعدة بيانات متوافقة مع ODBC، إلا أنه تم تصميمه واختباره بدقة للاستخدام مع قواعد بيانات خادم العميل، بما في ذلك Microsoft ® وOracle وغيرها.
يدعم ASP قواعد بيانات الملفات المشتركة (مثل Microsoft Access أو FoxPro) كمصادر بيانات صالحة. على الرغم من أن بعض الأمثلة في وثائق ASP تستخدم قواعد بيانات الملفات المشتركة، إلا أننا نوصي باستخدام محركات قواعد البيانات هذه فقط للتطوير أو لسيناريوهات النشر المحدودة. قد لا تكون قواعد بيانات الملفات المشتركة مناسبة تمامًا لقواعد بيانات خادم العميل التي تلبي احتياجات تطبيقات الويب عالية الطلب وعالية الجودة.
تكوين ملف قاعدة بيانات SQL Server DSN
ملاحظة: إذا كانت قاعدة البيانات موجودة على خادم بعيد، فاتصل بمسؤول الخادم للحصول على معلومات تكوين إضافية؛ ويستخدم الإجراء التالي إعدادات ODBC الافتراضية لـ SQL Server، والتي قد لا تنطبق على تكوين الأجهزة لديك.
في مربع الحوار إنشاء مصدر بيانات جديد، حدد SQL Server من مربع القائمة، ثم انقر فوق التالي.
اكتب اسمًا لملف DSN ثم انقر فوق "التالي".
انقر فوق "إنهاء" لإنشاء مصدر البيانات.
اكتب الاسم ومعرف تسجيل الدخول وكلمة المرور للخادم الذي يقوم بتشغيل برنامج خدمة SQL.
في مربع الحوار إنشاء مصدر بيانات جديد لـ SQL Server، اكتب اسم الخادم الذي يحتوي على قاعدة بيانات SQL Server في مربع القائمة Server، ثم انقر فوق التالي.
حدد كيفية التحقق من معرف تسجيل الدخول الخاص بك.
إذا اخترت مصادقة خادم SQL، فأدخل معرف تسجيل الدخول وكلمة المرور، ثم انقر فوق التالي.
في مربع الحوار إنشاء مصدر بيانات جديد لـ SQL Server، قم بتعيين قاعدة البيانات الافتراضية وبرنامج التشغيل لإعدادات الإجراء المخزن وتعريف ANSI، ثم انقر فوق التالي. (لمزيد من المعلومات، انقر فوق تعليمات.)
في مربع الحوار (المسمى أيضًا إنشاء مصدر بيانات جديد لـ SQL Server)، حدد أسلوب تحويل الأحرف، ثم انقر فوق التالي. (لمزيد من المعلومات، انقر فوق تعليمات.)
في مربع الحوار التالي (المسمى أيضًا "إنشاء مصدر بيانات جديد لـ SQL Server")، حدد إعدادات تسجيل الدخول.
ملاحظة عادةً، يمكنك فقط استخدام السجلات لتصحيح مشكلات الوصول إلى قاعدة البيانات.
في مربع الحوار إعداد ODBC Microsoft SQL Server، انقر فوق اختبار مصدر البيانات. إذا تم إنشاء DSN بشكل صحيح، فسيشير مربع حوار نتائج الاختبار إلى أن الاختبار قد اكتمل بنجاح.
اتصال خادم SQL ومعلومات الأمان إذا كنت تقوم بتطوير تطبيق قاعدة بيانات ASP يتصل بقاعدة بيانات SQL Server عن بعد، فيجب عليك مراعاة المشكلات التالية:
خيارات الاتصال - يمكنك الاختيار بين مآخذ توصيل TCP/IP وأنابيب الاتصال المسماة للوصول إلى قاعدة بيانات SQL Server البعيدة. عند استخدام توجيهات الإخراج المسماة، نظرًا لأنه يجب مصادقة مستخدم قاعدة البيانات على نظام التشغيل Windows NT قبل إنشاء اتصال، قد يتم رفض الوصول إلى توجيه الإخراج المسمى للمستخدمين الذين لديهم هويات وصول SQL Server مناسبة ولكن بدون حساب مستخدم Windows NT على الكمبيوتر. وكبديل، يمكن توصيل اتصال باستخدام مآخذ توصيل TCP/IP مباشرةً بخادم قاعدة البيانات دون المرور عبر كمبيوتر وسيط باستخدام الأنابيب المسماة. لأنه يمكنك الاتصال مباشرة بخادم قاعدة البيانات باستخدام اتصال مأخذ توصيل TCP/IP، يمكن للمستخدمين الوصول من خلال مصادقة SQL Server دون الحاجة إلى المصادقة من خلال Windows NT.
ملاحظة: يمكن أن يؤدي استخدام مآخذ توصيل TCP/IP إلى تحسين الأداء عند الاتصال بقواعد البيانات البعيدة.
الأمان - إذا كنت تستخدم ميزات الأمان المتكاملة أو المختلطة لـ SQL Server، وكانت قاعدة بيانات SQL Server موجودة على خادم بعيد، فلا يمكنك استخدام إقرار الطلب/الاستجابة لنظام التشغيل Windows NT. أي أنه لا يمكن إعادة توجيه معرّف الطلب/الاستجابة لنظام التشغيل Windows NT إلى الكمبيوتر البعيد، ولكن يمكن استخدام المصادقة الأساسية فقط، والتي تعتمد على معلومات اسم المستخدم وكلمة المرور الخاصة بالمستخدم.
لمزيد من المعلومات حول هذا الموضوع، راجع http://www.microsoft.com/sqlsupport/
الصفحة الرئيسية للدعم الفني لـ Microsoft SQL Server.
تكوين ملف قاعدة بيانات Oracle DSN
تأكد أولاً من تثبيت برنامج مستخدم Oracle بشكل صحيح على الكمبيوتر الذي سيتم إنشاء DSN عليه. لمزيد من المعلومات، اتصل بمسؤول الخادم الخاص بك أو راجع وثائق برنامج قاعدة البيانات الخاصة بك.
في مربع الحوار إنشاء مصدر بيانات جديد، حدد Microsoft ODBC لـ Oracle من مربع القائمة، ثم انقر فوق التالي.
اكتب اسمًا لملف DSN ثم انقر فوق "التالي".
انقر فوق "إنهاء" لإنشاء مصدر البيانات.
أدخل اسم المستخدم وكلمة المرور واسم الخادم، ثم انقر فوق "موافق".
ملاحظة: ملفات DSN لها ملحق .dsn وتقع في الدليل ProgramsCommon FilesODBCData Sources.
لمزيد من المعلومات حول إنشاء ملفات DSN، قم بزيارة موقع Microsoft ODBC على الويب: http://microsoft.com/odbc/.
الاتصال بقاعدة البيانات الخطوة الأولى في الوصول إلى معلومات قاعدة البيانات هي إنشاء اتصال بمصدر قاعدة البيانات. يوفر ADO كائن اتصال يمكن استخدامه لإنشاء وإدارة الاتصالات بين التطبيقات وقواعد بيانات ODBC. يحتوي كائن الاتصال على خصائص وأساليب متنوعة يمكنك استخدامها لفتح اتصالات قاعدة البيانات وإغلاقها وتقديم طلبات استعلام لتحديث المعلومات.
لتأسيس اتصال بقاعدة البيانات، عليك أولاً إنشاء مثيل لكائن الاتصال. على سبيل المثال، يقوم البرنامج النصي التالي بإنشاء كائن اتصال ثم يفتح اتصال قاعدة البيانات:
<%
'إنشاء كائن اتصال
تعيين cn = Server.CreateObject("ADODB.Connection")
'فتح اتصال؛ تشير السلسلة إلى DSN
cn.Open "FILEDSN=MyDatabase.dsn"
%>
ملاحظة: لا يمكن أن تحتوي سلسلة DSN على مسافات قبل أو بعد علامة المساواة (=).
في هذه الحالة، يشير الأسلوب Open الخاص بكائن الاتصال إلى ملف يستند إلى DSN يحتوي على معلومات الموقع والتكوين حول قاعدة البيانات. يمكنك أيضًا الإشارة بوضوح إلى الموفر ومصدر البيانات ومعرف المستخدم وكلمة المرور دون الرجوع إلى DSN.
تنفيذ استعلام باستخدام كائن اتصال باستخدام أسلوب التنفيذ الخاص بكائن الاتصال، يمكنك إصدار استعلام لغة الاستعلام الهيكلية (SQL) إلى مصدر قاعدة بيانات واسترداد النتائج. SQL هي اللغة القياسية الصناعية للتواصل مع قواعد البيانات ولديها العديد من الأوامر لاسترداد المعلومات وتحديثها.
يستخدم البرنامج النصي التالي أسلوب التنفيذ الخاص بكائن الاتصال لإصدار استعلام في جدول باستخدام أمر SQL INSERT، الذي يقوم بإدراج البيانات في جدول قاعدة بيانات محدد. في المثال التالي، يقوم البرنامج النصي بإدراج الاسم Jose Lugo في جدول قاعدة بيانات يسمى العملاء.
<%
'"تحديد DSN المستند إلى الملف."
strDSN = "FILEDSN=MyDatabase.dsn"
'قم بإنشاء مثيل لكائن الاتصال وافتح اتصال قاعدة البيانات
تعيين cn = Server.CreateObject("ADODB.Connection")
cn.فتح strDSN
"تحديد عبارة SQL SELECT."
strSQL = "أدخل قيم العملاء (الاسم الأول واسم العائلة) ('جوزيه' و'لوغو')"
'استخدم أسلوب التنفيذ لإصدار استعلام SQL إلى قاعدة البيانات
cn.تنفيذ (سترسكل)
%>
لاحظ أن الملفات المستندة إلى سلاسل مسار DSN يجب ألا تحتوي على مسافات قبل علامة المساواة (=) وبعدها.
بالإضافة إلى أمر SQL INSERT، يمكنك أيضًا استخدام أمري SQL UPDATE وDELETE لتغيير معلومات قاعدة البيانات وحذفها.
باستخدام أمر SQL UPDATE، يمكنك تغيير قيمة كل عنصر في جدول قاعدة البيانات. يستخدم البرنامج النصي التالي الأمر UPDATE لتغيير حقل الاسم الأول لكل سجل في جدول العملاء الذي يحتوي حقل اسم العائلة الخاص به على الاسم الأخير من سميث إلى جيف.
<%
تعيين cn = Server.CreateObject("ADODB.Connection")
cn.Open "FILEDSN=MyDatabase.dsn"
cn.Execute "تحديث العملاء الذين قاموا بتعيين الاسم الأول = 'جيف' حيث اسم العائلة = 'سميث' "
%>
لحذف سجلات معينة من جدول قاعدة البيانات، استخدم أمر SQL DELETE. يقوم البرنامج النصي التالي بحذف كافة الصفوف التي تحمل الاسم الأخير سميث من جدول العملاء:
<%
تعيين cn = Server.CreateObject("ADODB.Connection")
cn.Open "FILEDSN=MyDatabase.dsn"
cn.تنفيذ "الحذف من العملاء حيث اسم العائلة = 'سميث'"
%>
ملاحظة يجب عليك توخي الحذر عند استخدام الأمر SQL DELETE. عند استخدام الأمر DELETE بدون عبارة WHERE، فإنه يحذف كافة الصفوف في الجدول. تأكد من تضمين جملة SQL WHERE لتحديد الصفوف المحددة المراد حذفها.
استخدام كائنات مجموعة السجلات لمعالجة النتائج على الرغم من أن كائن الاتصال يبسط مهمة الاتصال بقاعدة البيانات والاستعلام، إلا أن كائن الاتصال لا يزال به العديد من أوجه القصور. على وجه التحديد، لا يمكن استخدام كائن الاتصال الذي يقوم باسترداد معلومات قاعدة البيانات وعرضها لإنشاء برامج نصية؛ يجب أن تعرف بالضبط التغييرات التي تريد إجراؤها على قاعدة البيانات قبل أن تتمكن من استخدام الاستعلامات لتنفيذ التغييرات.
لاسترداد البيانات والتحقق من النتائج وتغيير قاعدة البيانات، يوفر ADO كائنات مجموعة السجلات. كما يوحي اسمه، يحتوي كائن Recordset على عدد من الميزات التي يمكنك استخدامها لاسترداد وعرض مجموعة من صفوف قاعدة البيانات أو "السجلات" استنادًا إلى قيود الاستعلام الخاص بك. يحتفظ كائن مجموعة السجلات بموقع السجلات التي يتم إرجاعها بواسطة الاستعلام، مما يسمح لك بالتنقل عبر النتائج واحدة تلو الأخرى.
اعتمادًا على إعداد خاصية PointerType لكائن Recordset، يمكنك تمرير السجلات وتحديثها. تسمح لك مؤشرات قاعدة البيانات بتحديد موقع عنصر معين ضمن مجموعة من السجلات. تُستخدم المؤشرات أيضًا لاسترداد السجلات وفحصها ثم إجراء العمليات بناءً على تلك السجلات. تحتوي كائنات مجموعة السجلات على خصائص تتيح لك التحكم بدقة في سلوك المؤشرات، مما يؤدي إلى تحسين قدرتك على فحص النتائج وتحديثها. على سبيل المثال، يمكنك استخدام خصائص CursorType وCursorLocation لتعيين نوع المؤشر، وإرجاع النتائج إلى تطبيق العميل (عادةً ما يتم الاحتفاظ بالنتائج على خادم قاعدة البيانات)، وعرض آخر التغييرات التي تم إجراؤها على قاعدة البيانات بواسطة مستخدمين آخرين .
استرداد السجلات يستخدم تطبيق قاعدة البيانات الناجح كائن الاتصال لإنشاء الارتباط وكائن Recordset لمعالجة البيانات التي تم إرجاعها. من خلال "تنسيق" الوظيفة المحددة لكائنين، يمكنك تطوير تطبيق قاعدة بيانات يمكنه تنفيذ أي مهمة معالجة بيانات تقريبًا. على سبيل المثال، يستخدم البرنامج النصي التالي من جانب الخادم كائن Recordset لتنفيذ أمر SQL SELECT. يقوم الأمر SELECT باسترداد مجموعة من المعلومات بناءً على قيود الاستعلام. يحتوي الاستعلام أيضًا على جملة SQL WHERE، والتي يتم استخدامها لتضييق نطاق الاستعلام. في هذا المثال، تحدد جملة WHERE الاستعلام على كافة السجلات التي تحتوي على الاسم الأخير سميث في جدول قاعدة بيانات العملاء.
<%
"إنشاء اتصال بمصدر البيانات."
strDSN = "FILEDSN=MyDatabase.dsn"
تعيين cn = Server.CreateObject("ADODB.Connection")
cn.فتح strDSN
'إنشاء مثيل لكائن مجموعة السجلات
تعيين rsCustomers = Server.CreateObject("ADODB.Recordset")
'افتح مجموعة سجلات باستخدام الأسلوب Open
"واستخدم الاتصال الذي أنشأه كائن الاتصال
strSQL = "حدد الاسم الأول واسم العائلة من العملاء حيث اسم العائلة = 'سميث' "
rsCustomers.Open strSQL، cn
'التنقل عبر مجموعة السجلات وعرض النتائج
'وزيادة موضع السجل باستخدام أسلوب MoveNext
تعيين objFirstName = rsCustomers("الاسم الأول")
تعيين objLastName = rsCustomers("LastName")
افعل حتى rsCustomers.EOF
الاستجابة.اكتب objFirstName & " " & objLastName & "<BR>"
rsCustomers.MoveNext
حلقة
%>
لاحظ أنه في المثال السابق، تم استخدام كائن الاتصال لتأسيس اتصال قاعدة البيانات واستخدم كائن Recordset الاتصال لاسترداد النتائج من قاعدة البيانات. تكون هذه الطريقة مفيدة عندما تحتاج إلى إعداد كيفية إنشاء ارتباط بقاعدة البيانات بالضبط. على سبيل المثال، إذا كنت بحاجة إلى تحديد مدة الانتظار قبل فشل محاولة الاتصال، فستحتاج إلى استخدام كائن الاتصال لتعيين الخصائص. ومع ذلك، إذا كنت تريد فقط إنشاء اتصال باستخدام خصائص الاتصال الافتراضية لـ ADO، فيجب عليك استخدام الأسلوب Open لكائن Recordset لإنشاء الارتباط:
<%
strDSN = "FILEDSN=MyDatabase.dsn"
strSQL = "حدد الاسم الأول واسم العائلة من العملاء حيث اسم العائلة = 'سميث' "
تعيين rsCustomers = Server.CreateObject("ADODB.Recordset")
'افتح اتصالاً باستخدام الطريقة المفتوحة
'واستخدم الاتصال الذي أنشأه كائن الاتصال
rsCustomers.Open strSQL، strDSN
'التنقل عبر مجموعة السجلات، وعرض النتائج،
'وزيادة موضع السجل باستخدام أسلوب MoveNext
تعيين objFirstName = rsCustomers("الاسم الأول")
تعيين objLastName = rsCustomers("LastName")
افعل حتى rsCustomers.EOF
الاستجابة.اكتب objFirstName & " " & objLastName & "<BR>"
rsCustomers.MoveNext
حلقة
%>
عند استخدام الأسلوب Open لكائن Recordset لتأسيس اتصال، يجب استخدام كائن Connection لضمان أمان الاتصال.
استخدام كائن الأمر لتحسين الاستعلامات باستخدام كائن أمر ADO، يمكنك تنفيذ الاستعلامات تمامًا كما تفعل مع كائني الاتصال ومجموعة السجلات، والفرق الوحيد هو أنه باستخدام كائن الأمر، يمكنك تحضير الاستعلام الخاص بك وتجميعه وتكراره في قاعدة البيانات المصدر باستخدام مجموعة مختلفة من القيم. تتمثل ميزة تجميع الاستعلامات بهذه الطريقة في أنه يمكنك تقليل الوقت المطلوب لإصدار الطلبات المعدلة بشكل متكرر للاستعلامات الموجودة. وبدلاً من ذلك، يمكنك ترك استعلام SQL غير محدد جزئيًا قبل التنفيذ من خلال الخيارات الموجودة في الجزء المتغير من استعلامك.
توفر لك مجموعة معلمات كائن الأمر عناء إعادة بناء الاستعلام في كل مرة يتم إعادة إصداره. على سبيل المثال، إذا كنت بحاجة إلى تحديث معلومات العرض والأسعار بانتظام في نظام ويب يستند إلى المخزون، فيمكنك تحديد الاستعلام مسبقًا كما يلي:
<%
'افتح اتصالاً باستخدام كائن أمر كائن الاتصال
'ليس لديه طريقة مفتوحة لتأسيس اتصال
strDSN = "FILEDSN=MyDatabase.dsn"
تعيين cn = Server.CreateObject("ADODB.Connection")
cn.فتح strDSN
'إنشاء كائن الأمر؛ استخدم خاصية ActiveConnection للإرفاق
"الاتصال بكائن الأوامر."
تعيين cm= Server.CreateObject("ADODB.Command")
تعيين cm.ActiveConnection = cn
'تعريف استعلام SQL
cm.CommandText = "أدخل في قيم المخزون (المادة، الكمية) (؟،؟)"
'احفظ نسخة معدة (أو مجمعة مسبقًا) من الاستعلام المحدد في CommandText
'الخاصية قبل التنفيذ الأول لكائن الأمر.
cm.Prepared = صحيح
'"تحديد معلومات تكوين معلمة الاستعلام"."
cm.Parameters.Append cm.CreateParameter("material_type",200, ,255 )
cm.Parameters.Append cm.CreateParameter("quantity",200, ,255 )
"تحديد وتنفيذ الإدراج الأول."
سم("material_type") = "المصابيح الكهربائية"
سم("الكمية") = "40"
سم.تنفيذ
"تحديد وتنفيذ الإدراج الثاني."
سم("material_type") = "الصمامات"
سم("الكمية") = "600"
سم.تنفيذ
%>
تحقق من المثال أعلاه وستلاحظ أن البرنامج النصي يقوم بشكل متكرر ببناء وإصدار استعلام SQL بقيم مختلفة دون إعادة تعريف الاستعلام وإعادة إرساله إلى مصدر قاعدة البيانات. يؤدي تجميع الاستعلامات باستخدام كائنات الأوامر أيضًا إلى تجنب مشاكل دمج متغيرات السلسلة والجدول التي تسببها استعلامات SQL. على وجه الخصوص، يمكن تجنب المشكلات المرتبطة بتعريف أنواع متغيرات السلسلة والتاريخ والوقت باستخدام مجموعة المعلمات لكائن الأوامر. على سبيل المثال، قد تؤدي قيمة استعلام SQL التي تحتوي على "'" إلى فشل الاستعلام:
strSQL = "أدخل قيم العملاء (الاسم الأول واسم العائلة) ("روبرت" و"أوهارا")"
لاحظ أن الاسم الأخير O'Hara يحتوي على "'"، والذي يتعارض مع "'" المستخدم لتمثيل البيانات في الكلمة الأساسية VALUES SQL. يمكن تجنب هذا النوع من المشاكل عن طريق ربط قيمة الاستعلام كمعلمة كائن أمر.
دمج جداول HTML وقواعد البيانات إن الوصول إلى صفحة ويب تحتوي على جدول HTML يمكّن المستخدمين من الاستعلام عن قاعدة بيانات عن بعد واسترداد معلومات محددة. باستخدام ADO، يمكنك إنشاء برامج نصية بسيطة جدًا لجمع معلومات جدول المستخدم، وإنشاء استعلامات قاعدة بيانات مخصصة، وإرجاع المعلومات إلى المستخدم. باستخدام كائن طلب ASP، يمكنك استرداد المعلومات التي تم إدخالها في جدول HTML ودمج هذه المعلومات في عبارة SQL. على سبيل المثال، تقوم وحدة البرنامج النصي التالية بإدراج المعلومات المقدمة بواسطة جدول HTML في جدول. يستخدم هذا البرنامج النصي مجموعة نماذج كائنات الطلب لجمع معلومات المستخدم.
<%
'افتح اتصالاً باستخدام كائن الاتصال
'ليس لديه طريقة مفتوحة لتأسيس اتصال
strDSN = "FILEDSN=MyDatabase.dsn"
تعيين cn = Server.CreateObject("ADODB.Connection")
cn.فتح strDSN
'إنشاء كائن أمر فوري
"واستخدم خاصية ActiveConnection للإرفاق
"الاتصال بكائن الأوامر."
تعيين cm= Server.CreateObject("ADODB.Command")
تعيين cm.ActiveConnection = cn
'تعريف استعلام SQL
cm.CommandText = "إدراج في قيم MySeedsTable (النوع) (؟)"
'"تحديد معلومات تكوين معلمة الاستعلام"."
cm.Parameters.Append cm.CreateParameter("type",200, ,255 )
"تحديد وتنفيذ الإدراج."
cm("type") = طلب("SeedType")
سم.تنفيذ
%>
إدارة اتصالات قاعدة البيانات إن التحدي الأكبر في تصميم تطبيق قاعدة بيانات ويب قوي، مثل تطبيق التسوق عبر الإنترنت الذي يخدم آلاف العملاء، هو إدارة اتصالات قاعدة البيانات بشكل مناسب. قد يؤدي فتح اتصال قاعدة البيانات والحفاظ عليه، حتى في حالة عدم نقل أي معلومات، إلى استهلاك موارد خادم قاعدة البيانات بشكل كبير وقد يتسبب في حدوث مشكلات في الاتصال. سيقوم تطبيق قاعدة بيانات الويب المصمم جيدًا بإعادة تدوير اتصالات قاعدة البيانات وسيكون قادرًا على تعويض التأخير الناجم عن ازدحام الشبكة.
التسبب في انتهاء مهلة الاتصال يمكن أن تؤدي الزيادة المفاجئة في النشاط إلى جعل خادم قاعدة البيانات غير عملي للغاية، مما يزيد بشكل كبير من الوقت الذي يستغرقه إنشاء اتصال بقاعدة البيانات. ونتيجة لذلك، فإن زمن الوصول الزائد للاتصال سوف يؤدي إلى انخفاض أداء قاعدة البيانات.
باستخدام ConnectionTimeout الخاص بكائن الاتصال، يمكنك تحديد الوقت الذي ينتظره التطبيق قبل التخلي عن محاولة الاتصال وإصدار رسالة خطأ. على سبيل المثال، يقوم البرنامج النصي التالي بتعيين خاصية ConnectionTimeout للانتظار لمدة 20 ثانية قبل إلغاء محاولة الاتصال:
تعيين cn = Server.CreateObject("ADODB.Connection")
cn.ConnectionTimeout = 20
cn.Open "FILEDSN=MyDatabase.dsn"
الخاصية ConnectionTimeout الافتراضية هي 30 ثانية.
ملاحظة: قبل دمج خاصية ConnectionTimeout في تطبيق قاعدة بيانات، تأكد من أن موفر الاتصال ومصدر البيانات يدعمان الخاصية.
قد تؤدي تطبيقات قواعد بيانات ويب الاتصالات المشتركة التي تقوم بإجراء اتصالات قاعدة البيانات وقطعها بشكل متكرر إلى انخفاض أداء خادم قاعدة البيانات. يدعم ASP الإدارة الفعالة للاتصالات باستخدام ميزات المشاركة الخاصة بـ ODBC 3.5. تحافظ مشاركة الاتصال على اتصالات قاعدة البيانات المفتوحة وتدير مشاركة هذا الاتصال بين مستخدمين مختلفين للحفاظ على أدائها وتقليل عدد الاتصالات الخاملة. لكل طلب اتصال، يحدد تجمع الاتصال أولاً ما إذا كان هناك اتصال خامل في التجمع. إذا كان موجودًا، فسيقوم تجمع الاتصال بإرجاع الاتصال بدلاً من إنشاء اتصال جديد بقاعدة البيانات.
إذا كنت تريد أن يشارك برنامج تشغيل ODBC الخاص بك في مشاركة الاتصال، فيجب تكوين برنامج تشغيل قاعدة البيانات وتعيين خاصية CPTimeout لبرنامج التشغيل في تسجيل Windows NT. عند قطع اتصال ODBC، يتم تجميع الاتصال بدلاً من قطعه. تحدد الخاصية CPTimeout مدة الاحتفاظ بالاتصال في تجمع الاتصالات. إذا ظل الاتصال في التجمع لفترة أطول من إعداد CPTimeout، فسيتم إغلاق الاتصال وإزالته من التجمع. القيمة الافتراضية لـ CPTimeout هي 60 ثانية.
يمكنك تمكين تجمع الاتصالات لبرنامج تشغيل قاعدة بيانات ODBC محدد عن طريق تعيين خاصية CPTimeout بشكل انتقائي عن طريق إنشاء مجموعة مفاتيح تسجيل كما يلي:
HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIdriver-nameCPTimeout = المهلة
(REG_SZ، الوحدات بالثواني)
على سبيل المثال، يقوم المفتاح التالي بتعيين إعداد مهلة تجمع اتصال برنامج تشغيل SQL Server إلى 180 ثانية (3 دقائق).
HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INISQL ServerCPTimeout = 180
ملاحظة افتراضيًا، يقوم خادم الويب بتنشيط تجمع اتصالات SQL Server عن طريق تعيين CPTimeout إلى 60 ثانية.
استخدام الاتصالات عبر الصفحات على الرغم من أنه يمكنك إعادة استخدام الاتصالات عبر الصفحات عن طريق تخزين الاتصالات في كائن التطبيق الخاص بـ ASP، إلا أن إبقاء الاتصال مفتوحًا في جميع الأوقات يعد أمرًا غير ضروري ولا يحقق الاستفادة الكاملة من مزايا تجمع الاتصالات. إذا احتاج العديد من المستخدمين إلى الاتصال بنفس تطبيق قاعدة بيانات ASP، فإن الطريقة الجيدة هي إعادة استخدام اتصال قاعدة البيانات عن طريق وضع سلسلة الاتصال عبر الصفحات في كائن تطبيق ASP. على سبيل المثال، يمكنك تحديد سلسلة الاتصال في إجراء الحدث Application_OnStart الخاص بالملف Global.asa، كما هو موضح في البرنامج النصي التالي:
قفل التطبيق
التطبيق("ConnectionString") = "FILEDSN=MyDatabase.dsn"
فتح التطبيق
ثم، في كل ملف ASP يصل إلى قاعدة البيانات، اكتب:
<OBJECT RUNAT=معرف الخادم=cn PROGID="ADODB.Connection"> </OBJECT>
لإنشاء مثيل لكائن الاتصال، استخدم البرنامج النصي التالي:
cn.فتح التطبيق ("سلسلة الاتصال")
بالنسبة للاتصالات المفتوحة، يمكنك كتابة البرنامج النصي التالي في نهاية الصفحة لإغلاق الاتصال:
cn. إغلاق
في الحالات التي يحتاج فيها مستخدم واحد إلى إعادة استخدام اتصال عبر الصفحات، فمن الأفضل استخدام اتصال كائن الجلسة بدلاً من كائن التطبيق.
أغلق الاتصال إذا كنت تريد الاستفادة بشكل أفضل من تجمع الاتصالات، فيجب عليك إغلاق اتصال قاعدة البيانات في أقرب وقت ممكن. افتراضيًا، سيتم إنهاء الاتصال بعد انتهاء تنفيذ البرنامج النصي. يؤدي إغلاق الاتصال عندما لا تكون هناك حاجة إليه إلى تقليل المتطلبات على خادم قاعدة البيانات ويجعل الاتصال متاحًا للمستخدمين الآخرين.
يمكنك استخدام الأسلوب Close الخاص بكائن الاتصال لإنهاء الاتصال بين كائن الاتصال وقاعدة البيانات. يفتح البرنامج النصي التالي الاتصال ثم يغلقه:
<% strDSN = "FILEDSN=MyDatabase.dsn"
تعيين cn = Server.CreateObject("ADODB.Connection")
cn.Open
cn. إغلاق
%>