عندما أقوم بتطوير برامج بنية BS، غالبًا ما أحتاج إلى معالجة بعض البيانات النصية ذات السعة الكبيرة في ORACLE، لذلك بعد الاختبار المتكرر، استخدمت أخيرًا ASP لحل مشكلة الوصول إلى البيانات النصية الكبيرة بنجاح ضمن ORACLE.
1. بيئة التشغيل:
1. مايكروسوفت ويندوز 2000 سيرفر + IIS 5.0
2. الإصدار القياسي الصيني Oracle8i
2. إنشاء جدول بيانات:
إنشاء نظام الجدول.اختبار(
فقاعة طويلة،
رقم الهوية)
/
3. البرنامج المصدر:
1. برنامج تخزين البيانات: test.asp
<%
"جزء معالجة إرسال النموذج."
'------------------------------------------------ -
إذا كان الطلب (موافق) = 1 إذن
'وظيفة تحويل الأحرف
وظيفة tansstr (sstr)
sstr=استبدال(sstr،،)
sstr=replace(sstr,chr(13) & chr(10),<br>)
tansstr=sstr
وظيفة النهاية
'إرسال مهمة البيانات
أ=لينب(طلب(نص))
ب=لين(طلب(نص))
ج=tansstr(طلب(نص))
"افتح قاعدة البيانات، وافتح جدول بيانات الاختبار باستخدام Rs كمجموعة السجلات."
تعيين OraSession=CreateObject(OracleInProcServer.XOraSession)
تعيين OraDatabase=OraSession.DbOpenDatabase(autop,system/manager,0)
تعيين rs=OraDatabase.CreateDynaset(اختر * من ترتيب الاختبار حسب المعرف desc,0)
"ابحث عن قيمة المعرف."
إذا rs.eof بعد ذلك
المعرف=1
آخر
معرف=RS(معرف)+1
نهاية إذا
'نظرًا لأن البيانات محدودة بطول عبارات SQL، يتم تخزين البيانات في عبارات غير SQL.
'------------------------------------------------ - ------
"رقم قياسي جديد."
rs.DbAddNew
'الكلاسيكية في هذه الجملة: استخدم أسلوب DbAppendChunk لكائن الحقول في مجموعة سجلات RS لمعالجة مشكلة تخزين الحقول الكبيرة.
rs.Fields(blob).DbAppendChunk(c)
"حفظ قيمة المعرف."
rs(id)=id
'قم بتحديث مجموعة السجلات
rs.DbUpdate
"عرض قسم النتائج."
'------------------------------------------------ - -------
Response.write تم تخزين البيانات في قاعدة البيانات. <ر>
الاستجابة.كتابة إجمالي عدد الأحرف المشغولة: & رقم التنسيق(b,2,-2,-2,-1) والكلمات<br>
Response.write إجمالي عدد البايتات المشغولة: & formatnumber(a,2,-2,-2,-1) & Byte<br>
Response.write <a href='view.asp'>يرجى القراءة...
'أغلق اتصال البيانات.
rs. Close
تعيين RS=لا شيء
اضبط OraSession = لا شيء
الاستجابة. النهاية
نهاية إذا
%>
<أتش تي أم أل>
<الجسم>
<طريقة النموذج=إجراء POST=test.asp>
<p>حل مشكلة الوصول إلى حقول Oracle الكبيرة في ASP:</p>
<p><textarearows=13 name=text cols=104></textarea></p>
<p><نوع الإدخال=قيمة الإرسال=حفظ الاسم=B1></p>
<نوع الإدخال=الاسم المخفي=قيمة جيدة=1>
</النموذج>
</الجسم>
</html>
2. برنامج إستدعاء البيانات: view.asp
<%
'اتصل بقاعدة البيانات وافتح جدول البيانات في وضع القراءة فقط
تعيين OraSession=CreateObject(OracleInProcServer.XOraSession)
تعيين OraDatabase=OraSession.DbOpenDatabase(autop,system/manager,0)
تعيين Rs=OraDatabase.DbCreateDynaset(اختر * من ترتيب الاختبار حسب المعرف التنازلي،4)
'تعيين القيمة الأولية: حدد حجم البايت لكل اعتراض على أنه 1024 بايت، ويمكن ضبط الحد الأقصى على 65280 بايت (64 كيلو بايت)
الحجم=65280
أنا = 0
يفعل
'قراءة البيانات في حلقة باستخدام أسلوب DbGetChunk لكائن الحقول في مجموعة سجلات Rs
Text=Rs.Fields(Blob).DbGetChunk(I*Size,Size)
الرد.كتابة النص
'ابحث عن العدد التفصيلي لوحدات البايت من البيانات التي يتم إخراجها في كل مرة
Text_Size=Lenb(نص)
أنا=أنا+1
"إذا كان العدد التفصيلي لوحدات البايت من البيانات التي يتم إخراجها في كل مرة أقل من حجم البايتات التي تم اعتراضها والتي سيتم تحديدها، فهذا يعني أن قطعة البيانات قد اكتملت وتم الخروج من الحلقة.
قم بالتكرار حتى Text_Size<Size
"إغلاق اتصال البيانات."
اضبط OraSession = لا شيء
%>
4. التذييل:
نظرًا لأن نوع البيانات طويل، تنص ORACLE على أن السعة الطويلة هي <2 جيجابايت. يمكن للطريقة المذكورة أعلاه تخزين نص كبير <2 جيجابايت، ومع ذلك، عند القراءة، لا يمكنني قراءة سوى الحد الأقصى للمحتوى الذي يبلغ 64 كيلو بايت لتأثير الطريقة المذكورة أعلاه ASP.
الجميع، إذا كان لديك المزيد من الخبرة أو حلول أفضل، واسمحوا لنا أن نعرف.