نحن على دراية بالفعل بتنفيذ عمليات قاعدة البيانات في ASP عن طريق استدعاء إجراءات SQL Server المخزنة، ولكن هل تعلم أنه يمكننا أيضًا إنشاء واستخدام الإجراءات المخزنة في قاعدة بيانات Access على مستوى سطح المكتب؟
يعد Access + ASP مزيجًا ممتازًا لتطوير تطبيقات الويب خفيفة الوزن: بسيطة وسريعة ومتوافقة، ولكن الأداء عادةً ليس عاليًا. علاوة على ذلك، هناك بعض المضايقات في استخدام كائنات ADODB.Connection وRecordset لتنفيذ عبارات SQL، لأن قيم معلمات عبارات SQL مع المعلمات غالبًا ما تكون مقسمة إلى سلاسل، لذلك هناك مشاكل مثل علامات الاقتباس المفردة. إحدى فوائد استخدام الإجراءات المخزنة هي أنها تدعم التوفير الإضافي لقيم معلمات عبارة SQL.
في الواقع، ما يسمى بالإجراءات المخزنة في Access (2000 وما فوق) لا يمكن مقارنتها بالإجراءات المخزنة في SQL Server. لا يمكن اعتباره إلا إجراءً مخزَّنًا، ولا يدعم عبارات SQL المتعددة، ولا يدعم العبارات المنطقية (هاها، إنه ليس T-SQL بعد كل شيء)، وما إلى ذلك. لا أعرف حتى الآن ما إذا كان قد تم ترجمته مسبقًا أم لا. ومع ذلك، كما أن ما يسمى بالفئات التي يتم تنفيذها بواسطة VBScript يتم تغليفها فقط وتعزز بشكل كبير تجميل بنية التعليمات البرمجية وقابلية إعادة استخدام البرنامج، يجب أن تكون إجراءات Access المخزنة خفيفة الوزن مفيدة أيضًا لتوحيد عمليات قاعدة بيانات احتمالية الخطأ وتقليلها، وقد يتم تحسين الأداء.
سأشرح أدناه خطوة بخطوة كيفية إنشاء إجراء مخزن في Access ثم استخدامه في برنامج ASP.
(1) إنشاء إجراء مخزن في Access
لا أعرف مدى جودة استخدام الجميع لـ Access. على أية حال، بالنسبة لي، فهو مجرد أداة لإنشاء ملفات قاعدة بيانات MDB. أقوم فقط بإنشاء ملفات MDB جديدة، ثم أقوم بإنشاء الجداول والفهارس والقيود وما إلى ذلك في واجهة Access. انتهى~
تلعب الاستعلامات في Access دور الإجراءات المخزنة. تشير إجراءات أو استعلامات Access المخزنة التي أذكرها أدناه إلى هذا الشيء.
لإنشاء الاستعلام، يوفر Access أداة ذكية، تشبه المعالج عند إنشاء DataAdapter في VS.NET. لكني أحب أن أكتب كود SQL مباشرة
ثم انقر فوق زر الاستعلام الموجود على الجانب الأيسر على واجهة Access الرئيسية، ثم انقر نقرًا مزدوجًا فوق إنشاء استعلام في طريقة عرض التصميم على اليمين لفتح طريقة عرض تصميم الاستعلام.
في هذا الوقت، ينبثق منشئ الاستعلام المرئي، نقوم أولاً بإضافة الجداول التي تحتاج عبارة SQL إلى تضمينها.
بعد إضافة الجدول، انقر بزر الماوس الأيمن فوق طريقة عرض التصميم وحدد SQL View للتبديل إلى نافذة تحرير تعليمات SQL البرمجية.
حسنًا، دعنا نتحدث عن خصائص إجراءات Access المخزنة.
شعوري الحالي هو أن استعلام Access عبارة عن غلاف لبيان SQL، ربما مع بعض التحسين مثل الترجمة المسبقة. لا يمكننا استخدام عمليات ومعاملات وأحكام منطقية وحلقات متعددة وما إلى ذلك مثل كتابة الإجراءات المخزنة في SQL Server ...
لكن الغرض الرئيسي من استخدام إجراءات Access المخزنة هو استخدام الاستعلامات التي توفرها معلمات إضافية. باستخدام الإجراءات المخزنة، لم يعد يتعين علينا مواجهة المشكلات المختلفة التي نواجهها عند ربط قيم المعلمات في سلاسل عبارات SQL، مثل:
شفرة:
خافت SQL
sql = SELECT * من المستخدمين حيث UserName = ' & userName & '
في الكود أعلاه، إذا كان متغير السلسلة userName يحتوي على علامات اقتباس مفردة، فسيتم الإبلاغ عن خطأ. يتعين علينا التحويل يدويًا:
شفرة:
خافت SQL
sql = SELECT * من المستخدمين حيث يتم تحويل UserName = ' & Replace(userName, ', '') & ' ' إلى علامتي اقتباس مفردتين متتاليتين
باستخدام الاستعلام مع المعلمات، يمكن كتابة عبارة SQL الخاصة بنا على النحو التالي:
شفرة:
خافت SQL
sql = SELECT * من المستخدمين حيث اسم المستخدم = @userName
ثم قم فقط بتمرير قيمة المعلمة @userName باستخدام خاصية المعلمة لكائن الأمر، وهي مريحة للغاية وبديهية.
شفرة:
مع كمد
"إنشاء كائن معلمة."
.Parameters.Append .CreateParameter(@userName)
'حدد القيم لكل معلمة
.Parameters(@userName) = userName
نهاية مع
نوضح هنا أيضًا استخدام المعلمات في إجراءات Access المخزنة. على عكس الإجراءات المخزنة في SQL Server، والتي تستخدم المتغيرات @ لتحديد المعلمات ثم تمرير كائنات المعلمات بالاسم نفسه، يتم تعريف المعلمات في Access حسب الترتيب بدلاً من الاسم. ليست هناك حاجة لتحديد اسم للمعلمات التي تم تمريرها. يمكنك أيضًا تسمية أسماء المعلمات في SQL بشكل عرضي، ويجب تحديدها بالترتيب حيث تظهر المعلمات في عبارة SQL. عادة، نستخدم طريقة التنفيذ لكائن الأمر ونمرر مباشرة في مصفوفة قيمة المعلمة لتنفيذ ~
شفرة:
cmd.Execute، صفيف (اسم المستخدم)
على سبيل المثال آخر، يتم كتابة أحد إجراءات Access المخزنة الخاصة بك على النحو التالي:
شفرة:
حدد * من المستخدمين حيث UserName = p_UserName وBookTitle = p_bookTitle
يمكنك القيام بذلك بهذه الطريقة، عن طريق تمرير مجموعة من قيم المعلمات، ولكن بالترتيب الصحيح:
شفرة:
cmd.Execute، صفيف (اسم المستخدم، عنوان الكتاب)
حسنًا، دعونا نلقي نظرة على الاستعلامين المستخدمين في مثالنا، أحدهما لكتابة البيانات. بعد كتابة عبارة SQL، احفظها وقم بتسميتها.
رمز إجراء مخزن آخر يقرأ البيانات.
(2) استخدام الإجراءات المخزنة
ثم يمكننا استدعاء هذه الإجراءات المخزنة في برنامج ASP.
هنا يمكنك أن ترى لماذا قلت أن الاستعلام في Access هو الإجراء المخزن الخاص به - تم تعيين خاصية CommandType لكائن الأمر الخاص بنا على 4، وهو Stored Proc!
لذا...
الكود التالي بسيط جداً:
شفرة:
<%
الخيار صريح
خافت س
عشوائية
ق = رند * 100
خافت كون، كمد
تعيين conn = Server.CreateObject(ADODB.Connection)
تعيين cmd = Server.CreateObject(ADODB.Command)
conn.Open Provider=Microsoft.Jet.OLEDB.4.0; مصدر البيانات= & Server.MapPath(sp.mdb)
مع كمد
.ActiveConnection = conn
.CommandType = &H0004 'الإجراء المخزن
.CommandText = AddNewData
نهاية مع
cmd.Execute، Array(CStr(Now())، CSng(s))
مع كمد
.ActiveConnection = conn
.CommandType = &H0004 'الإجراء المخزن
.CommandText = GetData
نهاية مع
النتيجة الخافتةRS، resultArray
تعيين resultRS = cmd.Execute(, Null)
إذا لم يكن نتيجةRS.EOF ثم
resultArray = resultRS.GetRows()
نهاية إذا
تعيين نتيجةRS = لا شيء
تعيين كمد = لا شيء
conn.Close
تعيين كون = لا شيء
الاستجابة.اكتب <ul>
خافت ط
لأني = 0 إلى UBound(resultArray, 2)
الاستجابة.اكتب <li> وresultArray(0, i)
الاستجابة.الكتابة والنتيجة(1، ط)
الاستجابة.الكتابة والنتيجة(2، ط)
الاستجابة.اكتب </li>
التالي
الاستجابة.اكتب </ul>
%>