ASP أداة قوية لتوليد صفحات ويب تفاعلية ديناميكية. فيما يلي برنامج تعليمي حول استخدام تخزين ASP الذي شاركه المحرر معك. الأصدقاء المهتمين ، دعنا نتعرف على ذلك مع المحرر!
1. تمرير المعلمات باستخدام كائنات الأوامر وكائنات المعلمة. ستستخدم هذه المحاضرة قاعدة بيانات Microsoft SQL Server 7.0 بشكل أساسي. أولاً ، قم بإنشاء ملف اتصال ADOSQL7.asp للنسخ الاحتياطي. لن أحدده عند استخدامه لاحقًا.
٪ '' adosql7.asp
OptionExplicit
استجابة. expires = 0
الجزء 1: إنشاء اتصال
Dimcnn ، Strcnn
setcnn = server.createObject ("adodb.connection")
strcnn = "provider = sqloledb ؛ userId = sa ؛ password = ؛ initialCatalog = pubs ؛ datasource = icbczjp"
cnn.openstrcnn
٪>
ملاحظة: عند استخدامه بنفسك ، قم بتعيين مصدر البيانات على اسم جهاز خادم قاعدة البيانات الخاص بك.
بالإضافة إلى ذلك ، عند استخدام قواعد بيانات الوصول في الماضي ، يمكن لـ Microsoft Access97 عرض الحقول والبيانات بسهولة. عند استخدام قواعد بيانات SQLServer ، خاصة عند تصحيح نصوص ASP على جهاز آخر ، تحتاج إلى تثبيت أدوات إضافية لعرض الحقول والبيانات. نحن هنا نوفر لك أداة: msqry32.exe (Microsoftquery). تم تثبيت هذا الملف مع Office97 ويقع بشكل عام في الدليل "Microsoft Office/Office".
مثال wuf70.asp:
٪@language = "vbscript" ٪>
!-#includefile = "adosql7.asp"->
!-#تشمل file = "adovbs.inc"->
٪ '' wuf70.asp
dimcmdtest ، prmtest ، rstest
"إنشاء كائن الأمر
setCmdTest = server.createBject ("Adodb.Command")
"يمكن توصيل كائنات السجلات وأمر الأوامر بكائنات الاتصال من خلال خاصية ActiveConnection.
cmdtest.activeconnection = cnn
"أمر SQL - يحتوي على معلمتين ، التعبير عنها؟
cmdtest.commandtext = "updatejobssetjob_desc =؟ whyjob_id =؟"
"افترض أن نوع الأمر هو عبارة SQL
cmdtest.CommandType = ADCMDText
"خاصية معدّة تحدد ما إذا كان سيتم تجميع أمر SQL أولاً ، قم بتعيينه على صواب لتسريع التشغيل
cmdtest.preped = true
"إنشاء كائن المعلمة
setPrmtest = cmdtest.createparameter ("Job_Desc" ، Advarchar ، Adparaminput ، 50 ، "Network")
"إلحاق البيانات إلى معلمات جمع البيانات
cmdtest.parameters.appendprmtest
setPrmtest = cmdtest.createparameter ("Job_id" ، AdSmallint ، Adparaminput ، "12")
cmdtest.parameters.appendprmtest
"تنفيذ التعديل - لا حاجة لإرجاع النتيجة ، فقط استخدم cmdtest.execute
cmdtest.execute
"إعادة تعيين المعلمات لتشغيلها - يمكنك تعديل جزء آخر من البيانات
cmdtest.parameters ("job_id") = "1"
cmdtest.parameters ("job_desc") = "اختبار"
cmdtest.execute
إعادة تعيين المعلمات لتشغيل
cmdtest ("Job_id") = "14"
cmdtest ("Job_Desc") = "Financial"
cmdtest.execute
setRstest = cnn.execute ("selectjob_id ، job_descfromjobs")
Whilenotrstest.eof
respons.writerstest (0) & rstest (1) و ""
RSTEST.Movenext
ويند
cnn.close: setPrmtest = لا شيء
setCmdTest = لا شيء: setcnn = لا شيء
٪>
تحليل:
1. يتم استخدام طريقة CreateParameter لكائن الأمر لإنشاء كائنات معلمة لأوامر SQL أو الإجراءات المخزنة. هناك خمسة معلمات في المجموع (المعلمات الخمس اختيارية):
المعلمة الأولى: اسم كائن المعلمة ؛
المعلمة الثانية: هناك أنواع كثيرة من أنواع البيانات من كائنات المعلمة. يرجى الرجوع إلى مساعدة ADO ، هنا Advarchar (قيمة السلسلة) ، AdSmallint (عدد صحيح موقّع 2 بايت) ؛
المعلمة الثالثة: نوع المعلمة. يمكن أن يكون: AdParamInput (يشير إلى معلمات الإدخال) ، AdParamOutput (يشير إلى معلمات الإخراج) ، AdParamReturnValue (يشير إلى قيمة الإرجاع) ، AdParamunknown (يشير إلى أنه لا يمكن تحديد نوع المعلمة) ، Adparaminputoutput (يشير إلى معلمات الإدخال/الإخراج) ؛
المعلمة الرابعة: يُفضل تحديد طول بيانات المعلمة ليكون مساوياً لطول الحقل المقابل في قاعدة البيانات لتجنب الأخطاء أثناء الاستخدام. خاصة عندما يكون نوع البيانات Varchar ، إذا كان عدد صحيح أو نوع تاريخ ، فإن القيمة ليست ضرورية ؛
المعلمة الخامسة: القيمة الأولية لإعداد المعلمة.
2.CMDTEST.Parameters.Append Method يضيف كائن معلمة إلى جمع بيانات المعلمات. من هذا المثال ، يمكنك أيضًا معرفة كيفية استخدام معلمات متعددة.
3. من هذا المثال ، يمكننا أن نرى أنك تحتاج فقط إلى إعادة تعيين معلمات الإدخال لإجراء تعديلات على البيانات الأخرى ، وهي مريحة للغاية. هذه الفكرة هي أيضًا واحدة من الأساليب الأكثر شيوعًا عند البرمجة.
4. إعادة تعيين المعلمات ، يمكنك إما استخدام cmdtest.parameters أو حذفها على CMDTest ("Job_ID").
2. استخدم الإجراءات المخزنة في ASP
ما هو الإجراء المخزن (يوجد إجراء مخزن في خادم قاعدة البيانات وهو عبارة عن مجموعة من عبارات SQL التي يمكن أن تحتوي على واحد أو أكثر من عبارات SQL) ، وكيفية إنشاء إجراءات مخزنة لا تنتمي إلى محتوى هذه المحاضرة. توضح هذه المحاضرة بشكل أساسي كيفية استدعاء الإجراءات المخزنة في ASP.
فوائد استخدام الإجراءات المخزنة رائعة ، والتي تكون أكثر كفاءة من تشغيل أوامر SQL في البرامج النصية ASP ؛ يمكنهم تحسين الأداء الكلي وتقليل تحميل الشبكة (تقليل التفاعل بين خوادم الشبكة وخوادم البيانات) ؛ يمكنهم تحسين رمز ASP وتحسين مرونة الكود ، وهلم جرا.
(ط) استخدام معلمات الإدخال في الإجراءات المخزنة
الإجراء المخزن المستخدم في هذا المثال هو "Byroyalty" الذي يأتي مع SQLServer 7.0. بيان SQL في الداخل بسيط للغاية. إنه ليس أكثر من مجرد CreateProcedureByroyalty ، ومعلمة الإدخال هي percentage:
CreateProcedureByroyalty@النسبة المئوية
مثل
selecau_idfromtitleauthor
wheretitleauthor.royaltypeper=@percentage
servbywww.cidu.net
مثال wuf71.asp
٪@لغة = vbscript ٪>
!-#includefile = "adosql7.asp"->
!-#تشمل file = "adovbs.inc"->
٪ '' wuf71.asp
dimcmdtest ، prmtest ، rstest
setCmdTest = server.createBject ("Adodb.Command")
cmdtest.commandtext = "byroyalty" '' اسم الإجراء المخزن
"لنفترض أن نوع الأمر هو إجراء مخزن
cmdtest.CommandType = ADCMDStoredProc
"إنشاء كائن المعلمة
setPrmtest = server.createBject ("adodb.parameter")
'سمة النوع تتوافق مع المعلمة الثانية في wuf70.asp
prmtest.type = adinteger''4-byte موقعة عدد صحيح
"خاصية الاتجاه تتوافق مع المعلمة الثالثة في wuf70.asp
prmtest.direction = adparaminput
'سمة القيمة تتوافق مع المعلمة الخامسة في wuf70.asp
prmtest.value = 30
cmdtest.parameters.appendprmtest
setCmdTest.Activeconnection = cnn
"تحتاج إلى إرجاع مجموعة سجلات ، لذا استخدم setRstest = cmdtest.execute
setRstest = cmdtest.execute
Whilenotrstest.eof
reponse.writerstest (0) و ""
RSTEST.Movenext
ويند
cnn.close
setRstest = لا شيء: setPrmTest = لا شيء
setCmdTest = لا شيء: setcnn = لا شيء
٪>
يمكن أن تحدد خاصية CommandText أوامر SQL ، أو كإجراءات مخزنة أو أسماء الجدول.
في هذا المثال ، يختلف إنشاء كائن معلمة قليلاً عن wuf70.asp. في الواقع ، إذا نظرت عن كثب ، فإن المعنى مشابه. هناك خصائصان في هذا المثال غير مستخدمين: prmtest.name ، prmtest.size ، بالإضافة إلى النوع والاتجاه والقيمة ، والتي تتوافق مع المعلمات الخمسة في wuf70.asp.
(2) استخدام معلمات الإخراج
عند الحصول على سجل من جدول قاعدة البيانات أو حساب قيمة ، يجب استخدام الإجراء المخزن الذي يقوم بإرجاع معلمات الإخراج. لإعطاء مثال ، قم أولاً بإنشاء إجراء تخزين جديد في مكتبة SQLServer Pubs. يحتاج الإجراء المخزن إلى إدخال تاريخين ثم إخراج القيمة القصوى.
CreateProcedureUtemplift
((
job_lvltinyintoutput ،
@hire_date1datetime ،
@hire_date2datetime
)
مثل
حدد@job_lvl = max (job_lvl) fromImployee
Whyhire_date> =@hire_date1andhire_date =@hire_date2
هناك عدة طرق لإنشاء إجراءات مخزنة:
1. استخدم Microsoft SQLServer's Enterprisemanager ، افتحه في دليل الأشجار على اليسار وافتحه بدوره: constroot -microsoftsqlservers - sqlservergroup - icbczjp (windowsnt) –Databases -pubs -storedproceduredureduredureduredreed. بعد إدخال الإجراء المخزن ، يمكن أيضًا اكتشاف بناء الجملة ؛
2. استخدم QueryAnalyzer's Microsoft SQLServer ، واتصل أولاً بخادم قاعدة البيانات وحدد قاعدة بيانات Pubs. أدخل الإجراء المخزن أعلاه وانقر فوق ExecuteQuery (أو اضغط F5) ؛
3. باستخدام VB6.0 ، بعد فتح القائمة "عرض"/"نافذة عرض البيانات" ، انقر بزر الماوس الأيمن على "ارتباط البيانات"/"رابط بيانات جديد" ؛
4. استخدم البرنامج النصي ASP لإنشاء إجراءات مخزنة ، مثل WUF75.asp:
٪@لغة = vbscript ٪>
!-#includefile = "adosql7.asp"->
!-#تشمل file = "adovbs.inc"->
٪ '' wuf75.asp
Dimstrsql
يمكن تجاهل "ملاحظة: & chr (10) & chr (13) ، بشكل رئيسي من أجل المظهر الجيد
strsql = "CreateProCedureutEmploy (job_lvltinyintoututput ،" & chr (10) & chr (13) & _
"@hire_date1datetime ،@hire_date2dateTime) كـ" & chr (10) & chr (13) & _
"حدد@job_lvl = max (job_lvl) fromImployee" & _
"Whyhire_date> =@hire_date1andhire_date =@hire_date2"
cnn.executestrsql
استجابة. "إنشاء إجراء مخزن بنجاح"
cnn.close: setcnn = لا شيء
٪>
بعد إنشاء الإجراء المخزن ، بالإضافة إلى استخدام القائمة ، يمكنك أيضًا حذفه باستخدام عبارة SQL "DroprocedureutEmplow".
مثال WUF72.ASP - أرسل معلمات الإدخال المطلوبة إلى الإجراء المخزن والحصول على نتيجة الإخراج.
٪@لغة = vbscript ٪>
!-#includefile = "adosql7.asp"->
!-#تشمل file = "adovbs.inc"->
٪ '' WUF72.asp
dimcmdtest ، prmtest
setCmdTest = server.createBject ("Adodb.Command")
cmdtest.activeconnection = cnn
cmdtest.commandtext = "OuteMploy" '' اسم الإجراء المخزن
cmdtest.CommandType = ADCMDStoredProc
"إنشاء كائن المعلمة
setPrmtest = cmdtest.createparameter ("Job_LVL" ، adtinyint ، adparamoutput)
cmdtest.parameters.appendprmtest
"adtinyint-1 بايت موقعة
'' addbdate date (yyyymmdd)
setPrmtest = cmdtest.createparameter ("Hiredate1" ، addbdate ، adparaminput ،، "1993-05-09")
cmdtest.parameters.appendprmtest
setPrmtest = cmdtest.createparameter ("Hiredate2" ، addbdate ، adparaminput ، "1994-02-01")
cmdtest.parameters.appendprmtest
cmdtest.execute
تعني التعبيرات الثلاثة التالية نفس الشيء
Response.writecmdtest ("job_lvl") و ""
Response.writecmdtest.parameters ("job_lvl") و ""
Response.writecmdtest.parameters ("job_lvl"). القيمة
cnn.close
setPrmtest = لا شيء
setCmdTest = لا شيء: setcnn = لا شيء
٪>
(3) استخدام معلمات رمز الإرجاع
استخدم عبارة الإرجاع لإرجاع رموز الإرجاع المختلفة من الإجراءات المخزنة. على سبيل المثال ، يحصل الإجراء المخزن أولاً على مجموعة سجلات ، وبعد ذلك ، إذا كان هناك موظف يدعى Margaret ، فسوف يعود 1 ، وإلا فإنه سيعود 0.
CreateProcedurerEturnEmploy
مثل
selecemp_id ، fnamefrommployee
ifexists (selectFnameFromImployeWhereFname = '' Margaret '')
العودة (1)
آخر
العودة (0)
مثال wuf73.asp
٪@لغة = vbscript ٪>
!-#includefile = "adosql7.asp"->
!-#تشمل file = "adovbs.inc"->
٪ '' wuf73.asp
dimcmdtest ، prmtest ، rstest
setCmdTest = server.createBject ("Adodb.Command")
cmdtest.activeconnection = cnn
cmdtest.commandtext = "returnemploy" '' اسم الإجراء المخزن
cmdtest.CommandType = ADCMDStoredProc
setPrmtest = cmdtest.createparameter ("ReturnValue" ، Adinteger ، Adparamreturnvalue)
cmdtest.parameters.appendprmtest
setRstest = cmdtest.execute ()
Whilenotrstest.eof
respons.Writerstest (0) و "] [" & rstest (1) و ""
RSTEST.Movenext
ويند
rstest.close: setRstest = لا شيء
"قبل إرجاع CMDTest (" ReturnValue ") ، يجب إغلاق RSTEST أولاً ، وإلا فإن النتيجة ستكون غير صحيحة
IFCMDTest ("ReturnValue") = 1th
reponse.write "لديه هذا الموظف"
آخر
استجابة. "لا موظف"
Endif
cnn.close
setPrmtest = لا شيء
setCmdTest = لا شيء: setcnn = لا شيء
٪>
3. كيفية التعامل مع البيانات الكبيرة
تشير "البيانات الضخمة" هنا بشكل أساسي إلى الحقول النص (النص الكبير) وحقول الصورة (الصورة). لا يمكن الحصول على البيانات بشكل صحيح باستخدام الطرق الموضحة أعلاه. يجب عليك أولاً استخدام حجم = RSTEST (0) .ActualSize للحصول على الطول الفعلي لقيمة الحقل ، ثم استخدام RSTEST (0) .getChunk (الحجم) للحصول على البيانات. في الاستخدام الفعلي ، نظرًا لأن هذه الحقول كبيرة نسبيًا ، من أجل حفظ موارد الخادم واستخدامها بشكل معقول ، يتم اعتماد القراءة المقسمة بشكل عام. مثال wuf74.asp:
٪@لغة = vbscript ٪>
!-#includefile = "adosql7.asp"->
!-#تشمل file = "adovbs.inc"->
٪ '' WUF74.asp
Dimstrsql ، Rstest
'pr_info هو حقل نص
strsql = "selectpr_info ، pub_idfrompub_info"
setRstest = cnn.execute (strsql)
dimbasicsize ، يبدأ ، ltext
dowhilenotrstest.eof
reponse.writerstest (1) و ""
1024 بايت لكل قراءة
أساسيات = 1024
يبدأ = 0
بينما beginsizerstest (0)
ltext = rstest (0) .getChunk (أساسيات)
يبدأ = يبدأ+أساسيات
"مقطع الإخراج حسب القطاع إلى العميل
استجابة. writeltext
ويند
استجابة. "" ""
RSTEST.Movenext
حلقة
cnn.close
setRstest = لا شيء: setcnn = لا شيء
٪>
في هذا المثال ، تتم قراءة 1024 بايت كحد أقصى في كل مرة وقراءتها في عدة مرات. على العكس من ذلك ، إذا قمت بكتابة بيانات كبيرة إلى قاعدة البيانات ، فإن الطريقة تشبه ما سبق ، ولكن بدلاً من استخدام طريقة getChunk ، يمكنك استخدام طريقة AppendChunk:
Rstest (0) .AppendChunkltext
ملاحظة: أخيرًا ، سأقدم نصيحة صغيرة حول قاعدة بيانات SQLServer. إذا واجهت هذا الموقف: يتم عرض البيانات الصينية في قاعدة البيانات في رمز مشتعلة ، فيرجى عدم الذعر. تحتاج فقط إلى الانتقال إلى موقعي لتنزيل SQLSRv32.dll الكتابة فوق الملف بنفس الاسم تحت "C:/Windows/System". مصدر المشكلة هو برنامج تشغيل SQLServer ، والذي يحدث عادة في Windows 98 الإصدار 2 (يتم تثبيت رقم الإصدار من برنامج تشغيل SQLServer 3.70.06.23) أو Windows 2000 أو MDAC2.5 (رقم الإصدار هو 3.70.08.20).
ما سبق هو برنامج تعليمي حول استخدام تخزين ASP. أعتقد أنك تعلمت كل شيء. لمزيد من المحتوى ذي الصلة ، يرجى متابعة متابعة قناة WONEW Technology.