4. การพัฒนาและการใช้ส่วนประกอบ ASP:
1. องค์ประกอบคืออะไร?
ข้อดี:
n ง่ายต่อการโทรและบันทึกรหัส
ความปลอดภัยสูง
การประมวลผลธุรกรรม NSupport, สหภาพหลายองค์ประกอบ
ความเร็วในการวิ่ง
ไม่จำเป็นต้องปรับเปลี่ยนหน้าเพื่ออัพเกรดและแก้ไขส่วนประกอบดังนั้นจึงมีความยืดหยุ่นที่ดี
l ข้อเสีย:
การพัฒนาและการดีบักปัญหา
2. วิธีการพัฒนาโดยใช้ VB?
⑴. เปิด VB >> NewProject >> Activex dll
⑵. แก้ไขชื่อโครงการเป็นหลักสูตร
⑶. แก้ไขชื่อของโมดูลคลาสเป็น conn_db
⑷. โครงการ >> การอ้างอิง, การอ้างอิงถึงไลบรารี COM+ ประเภทบริการและไลบรารี Object Object ของ Microsoft Active Server
⑸. แก้ไขรหัสคลาสดังนี้:
จาก www.knowsky.com
'สร้างการเชื่อมต่อฐานข้อมูลและส่งออกฟิลด์ฐานข้อมูล
การตอบสนองสลัวเป็นการตอบสนอง
Dim Request เป็นคำขอ
Dim Server เป็นเซิร์ฟเวอร์
แอปพลิเคชัน Dimapplicationas
Dimsessionas เซสชัน
คลาสย่อย class_initialize ()
dim objcontext เป็น ObjectContext
ตั้งค่า objcontext = getObjectContext ()
ตั้งค่าการตอบสนอง = objContext (การตอบสนอง)
ตั้งค่าคำขอ = objContext (คำขอ)
Set Server = objContext (เซิร์ฟเวอร์)
ตั้งค่าแอปพลิเคชัน = objContext (แอปพลิเคชัน)
ตั้งค่าเซสชัน = objContext (เซสชัน)
สิ้นสุดย่อย
sub conn_db ()
ตั้งค่า conn = createObject (adodb.connection)
conn.open course_dsn, course_user, course_password
ตั้งค่า rs = createObject (adodb.recordset)
rs.open select * จาก user_info, conn, 1, 1
ถ้า Rs.RecordCount> 0 แล้ว
สำหรับ i = 1 ถึง Rs.RecordCount
Response.write <br> & rs (user_name) & <br>
ถ้า RS.EOF ออกจาก
Rs.Movenext
ต่อไป
สิ้นสุดถ้า
Rs.close
ตั้งค่า rs = ไม่มีอะไร
conn.close
ตั้งค่า conn = ไม่มีอะไร
สิ้นสุดย่อย
⑹. เพิ่ม cutstr คลาสใหม่
⑺. แก้ไขรหัสคลาสดังนี้:
'สกัดกั้นสตริง
ฟังก์ชั่น cutstr (str, ความยาว)
ถ้า len (str)> ความยาวแล้ว
cutstr = ซ้าย (str, ความยาว) & ...
อื่น
cutstr = str
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
⑻. ไฟล์ >> บันทึก
⑼. ไฟล์ >> ทำให้หลักสูตร. dll
3. ส่วนประกอบที่ลงทะเบียน: MTS และ regsvr32.exe
มีสองวิธีในการลงทะเบียนส่วนประกอบ: MTS และการใช้ regsvr32.exe แนะนำ MTS เนื่องจากมีข้อดีดังต่อไปนี้:
n ไดนามิกถอนการติดตั้งยอดคงเหลือเพื่อปรับปรุงความสามารถในการอัพเกรดส่วนประกอบและแอปพลิเคชันที่ใช้ส่วนประกอบ
n มีความสามารถในการเผยแพร่และส่งส่วนประกอบเหตุการณ์และคิวทำให้ง่ายต่อการรวมเข้ากับส่วนประกอบหลายอย่าง
ในการทำให้องค์ประกอบมีลักษณะ MTS ต้องมีการเปลี่ยนแปลงเล็กน้อยกับส่วนประกอบ เมื่อพัฒนาภายใต้ NT และ 98 ไลบรารีประเภทเซิร์ฟเวอร์ Microsoft Transaction จะต้องอ้างอิงในโครงการและเมื่อพัฒนาภายใต้ Windows 2000 จะต้องอ้างอิงไลบรารีประเภท COM+ บริการ
⑴. การลงทะเบียน regsvr32:
Regsvr32.exe เป็นไฟล์ที่เรียกใช้งานได้ภายใต้ System32
ใช้บรรทัดคำสั่งเพื่อป้อนไดเรกทอรีที่ไฟล์ส่วนประกอบ DLL อยู่และเรียกใช้งาน regsvr32 dll_file_name
เรียกใช้ regedit และรายการ course.conn_db และ course.cutstr จะพบได้ภายใต้ HKEY_CLASSES_ROOT ซึ่งระบุว่าการลงทะเบียนส่วนประกอบนั้นสำเร็จ
⑵. ลงทะเบียนกับ MTS:
①. เริ่ม >> โปรแกรม >> เครื่องมือการดูแล >> บริการส่วนประกอบ
②. ขยายไดเรกทอรีไปยังสถานะต่อไปนี้:
③. ทำตามตัวช่วยสร้างขั้นตอนต่อไปจนถึงกล่องโต้ตอบต่อไปนี้คลิกสร้างแอปพลิเคชันที่ว่างเปล่า:
④. ในกล่องโต้ตอบต่อไปนี้ตั้งชื่อหลักสูตรแอปพลิเคชันและค่าเริ่มต้นอื่น ๆ จนกว่าจะเสร็จสมบูรณ์
⑤. ขยายแอปพลิเคชันหลักสูตรคลิกขวาและสร้างส่วนประกอบใหม่
⑥. ทำตามพรอมต์และดำเนินการต่อ
⑦. เลือกส่วนประกอบที่เราพัฒนาขั้นตอนต่อไปจนกว่าจะเสร็จสิ้น
⑧. ในเวลานี้คุณจะพบว่ามีสององค์ประกอบเพิ่มเติมภายใต้แอปพลิเคชันหลักสูตร:
4. การโทรส่วนประกอบใน ASP
asp_use_com.asp
-
'ASP เรียกองค์ประกอบ com
ตั้งค่า cutstr_obj = server.createObject (course.cutstr)
Response.write cutstr_obj.cutstr (abcdefghijk, 3) & <br>
ตั้งค่า cutstr_obj = ไม่มีอะไร
ตั้งค่า conn_obj = server.createObject (course.conn_db)
conn_obj.conn_db ()
ตั้งค่า conn_obj = ไม่มีอะไร
-
ผล:
ABC ...
อ่า
ทูท
หมายความว่าการโทรประสบความสำเร็จ
5. ถอนการติดตั้งส่วนประกอบ
⑴.
หมายเหตุ: ก่อนอื่นป้อนไดเรกทอรีที่ส่วนประกอบ DLL อยู่แล้วใช้ regsvr32 –U dll_file_name เพื่อถอนการติดตั้ง
⑵. การใช้ส่วนประกอบที่ลงทะเบียนของ MTS ก่อนอื่นลบแอปพลิเคชันที่เกี่ยวข้องในบริการส่วนประกอบจากนั้นดำเนินการขั้นตอนที่ 1 เพื่อถอนการติดตั้งส่วนประกอบอย่างสมบูรณ์
6. ตำแหน่งการจัดเก็บส่วนประกอบ DLL และการตั้งค่าการอนุญาต
⑴. เราเพียงแค่ต้องคัดลอกไฟล์ DLL ที่รวบรวมและไฟล์อื่น ๆ ไม่จำเป็นต้องประมวลผล
⑵. วาง DLL นอกเว็บไซต์เช่นในไดเรกทอรี System32 เพื่อป้องกันการดาวน์โหลด
⑶. สิทธิ์ไฟล์ของ DLL ถูกตั้งค่าเป็นระบบการอ่านและผู้ใช้อินเทอร์เน็ตสำรวจโฟลเดอร์/เรียกใช้ไฟล์
⑷. DLL ลบการอนุญาตทั้งหมดใน IIs เช่นการอ่านการเข้าถึงสคริปต์โดยสมัครใจ ฯลฯ
หลังจากการประมวลผลข้างต้นความปลอดภัยของไฟล์ DLL สามารถมั่นใจได้
7. อื่น
วิธีการใช้วัตถุของ ASP ในส่วนประกอบเพื่อใช้รหัสพอร์ต ASP อย่างสะดวกสบายเป็นคอมโพเนนต์ COM ได้อย่างไร
5. IIS การกำหนดค่าที่เหมาะสมที่สุด
1. แท็บเว็บไซต์: IP, พอร์ต, โฮสต์เสมือน, การเชื่อมต่อ, บันทึก
2. ตัวกรอง ISAPI: เพิ่มการสนับสนุน PHP และ JSP
3. Home Directory Configuration Tab: I คือการตั้งค่าการอนุญาต (รวมกับสิทธิ์ไฟล์), สิทธิ์การดำเนินการ, การป้องกันแอปพลิเคชัน, การแมป, บัฟเฟอร์, พา ธ พาเรนต์, ข้อมูลข้อผิดพลาด
4. แท็บอื่น ๆ : ข้อผิดพลาดที่กำหนดเอง, ส่วนหัว HTTP, ความปลอดภัยของไดเรกทอรี, เอกสารประกอบ
5. ประโยชน์และข้อเสียของการบีบอัดไฟล์
VI.
1. ส่งอีเมล (JMail; MS SMTP)
ส่งอีเมลโดยใช้ Microsoft SMTP
⑴. ติดตั้งบริการ Microsoft SMTP
⑵. การตั้งค่าบริการ Microsoft SMTP
⑶. ส่วนรหัส:
mail_smtp.asp
-
Sub Sendmail (จาก who, towho, subject, body)
Dim Mymail
ตั้งค่า mymail = server.createObject (cdonts.newmail)
mymail.from = from who
mymail.to = towho
mymail.subject = เรื่อง
mymail.body = body
mymail.send
ตั้งค่า mymail = ไม่มีอะไร
สิ้นสุดย่อย
-
รูทีนย่อยนี้ยอมรับพารามิเตอร์ 4 ตัวที่สอดคล้องกับรายการต่อไปนี้
ที่อยู่อีเมลของผู้ส่ง
ที่อยู่อีเมลของผู้รับอีเมล
เรื่อง lemail
เนื้อหา lemail
วิธีใช้:
-
จากใคร = …
towho = …
เรื่อง = …
ร่างกาย = …
ถ้า towho <> แล้ว
Sendmail จาก Who, Towho, Subject, Body
สิ้นสุดถ้า
-
ส่งอีเมลโดยใช้ JMail
หากคุณสนใจคุณสามารถพูดคุยกับฉันได้
2. ไฟล์ unzip zip (wscript.shell และบรรทัดคำสั่ง winzip; ส่วนประกอบ Java)
⑴. ติดตั้ง Winzip 8.1 หรือสูงกว่า
⑵. ติดตั้งบรรทัดคำสั่ง winzip
⑶. ตั้งค่าสิทธิ์ไฟล์ของไดเรกทอรีการทำงานเพื่ออ่านเขียนและแก้ไขโดยผู้ใช้อินเทอร์เน็ต
⑷. ส่วนรหัส:
unzip_a_zipfile.asp
-
'เริ่มโปรแกรมด้วยวัตถุเชลล์
'zip_path เป็นเส้นทางไปยังไฟล์ zip เฉพาะเช่น c: /test.zip
'เส้นทางคือเส้นทางในการจัดเก็บไฟล์ที่คลายซิป
'ond เป็นพารามิเตอร์บรรทัดคำสั่ง
ตั้งค่า wshshell = server.createObject (wscript.shell)
ปัญหา = wshshell.run (wzunzip -ond & zip_path & & path, 1, true)
'ลบไฟล์ zip
ตั้งค่า myFileObject = server.createObject (scripting.filesystemobject)
myfileobject.deletefile zip_path
'ตัดสินว่าจะประสบความสำเร็จในการดำเนินการต่อหรือไม่
ถ้าเป็นปัญหา = 0 แล้ว
'ความสำเร็จ
-
อื่น
'ล้มเหลว
-
สิ้นสุดถ้า
-
3. ใช้งานไฟล์ XML
เวลาแลกเปลี่ยนมี จำกัด ดังนั้นเรามาพูดคุยกันอย่างละเอียดถ้าคุณมีเวลา
4. การอัปโหลดไฟล์
⑴. ติดตั้งไฟล์อัพโหลดไฟล์ ASP FileUp (รองรับการอัปโหลดไฟล์หลายรายการประเภทไฟล์และขนาดการตัดสินชื่อการเปลี่ยนชื่อไฟล์หลังจากการอัปโหลด ฯลฯ )
⑵. รีสตาร์ท IIS เพื่อให้องค์ประกอบการอัปโหลดมีประสิทธิภาพ
⑶. ตั้งค่าสิทธิ์ไฟล์ของไดเรกทอรีอัปโหลดเพื่อให้ผู้ใช้อินเทอร์เน็ตสามารถอ่านเขียนและแก้ไข
⑷. ส่วนรหัส
upload_file.htm
<style type = text/css>
-
.input {พื้นหลังสี: #FFFFF; : จอร์เจีย;
A: Link {Color: #1B629C;
A: Hover {Color: #FF6600;
A: เยี่ยมชม {การกำหนดข้อความ: ไม่มี}
-
</style>
<enter>
<ฟอร์ม enctype = multipart/form-data method = post action = upload_file.asp name = upload>
<ประเภทอินพุต = ชื่อที่ซ่อน = copyrightInfo value = http: //www.chinaasp.com>
โปรดเลือกไฟล์: <อินพุต type = file name = file1 class = input> <br> <br>
โปรดเลือกไฟล์: <อินพุต type = file name = file2 class = input> <br> <br>
</form>
<br> <br>
<a href = javascript: document.upload.submit ();> ส่ง </a>
</enter>
upload_file.asp
-
เมื่อเกิดข้อผิดพลาดต่อไป
'กำหนดฟังก์ชั่นที่ได้รับไฟล์ต่อท้าย
ฟังก์ชั่น getFileExtName (ชื่อไฟล์)
pos = instrrev (ชื่อไฟล์,.)
ถ้า pos> 0 แล้ว
getFileExtName = mid (ชื่อไฟล์, pos+1)
อื่น
getFileExtName =
สิ้นสุดถ้า
ฟังก์ชันสิ้นสุด
'กำหนดฟังก์ชันเพื่อให้ได้ชื่อที่ถูกต้อง
ฟังก์ชั่น getFilename (ชื่อไฟล์)
Lens = Len (ชื่อไฟล์) -Len (getFileExtName (ชื่อไฟล์))-1
getFileName = ซ้าย (ชื่อไฟล์, เลนส์)
ฟังก์ชันสิ้นสุด
'สร้างวัตถุสำหรับส่วนประกอบอัปโหลดไฟล์
SET FILEUP = Server.CreateObject (chinaisasp.upload)
'อ่านไฟล์ที่อัปโหลดโดยผู้ใช้ลูปและบันทึกไว้บนเซิร์ฟเวอร์
สำหรับแต่ละ f ใน fileup.files
'เมื่อผู้ใช้ไม่เลือกไฟล์หรือขนาดไฟล์เกิน 10m ให้กลับไปที่หน้าเว็บที่เลือกไฟล์เพื่ออัปโหลด
ถ้า f.fiLename = หรือ f.filesize> 10485500 จากนั้นตอบกลับการ redirect upload_file.htm
'รับเส้นทางที่บันทึกไว้
path = server.mappath (upload_file.asp)
PATH = ซ้าย (PATH, LEN (PATH) -15)
'บันทึกไฟล์
F.Saveas Path & GetFilename (F.Filename) &. & getFileExtName (F.Filename)
ต่อไป
Response.redirect upload_file.htm
-
5. การดำเนินการไดรฟ์/ไดเรกทอรี/ไฟล์
เวลาแลกเปลี่ยนมี จำกัด ดังนั้นเรามาพูดคุยกันอย่างละเอียดถ้าคุณมีเวลา
6. ประสบการณ์การเขียนและการดีบัก ASP: วิธีเลือกคุกกี้และเซสชันจำนวนกับดักคุกกี้การตั้งค่าการหมดอายุของหน้าและการบัฟเฟอร์วิธีการให้แน่ใจว่าพกพาได้วิธีจัดการกับข้อผิดพลาด 500 ข้อในเซิร์ฟเวอร์ภายใน ...
1. คุกกี้และตัวเลือกเซสชัน:
⑴. คุณสมบัติทั่วไป
⑵. ความแตกต่าง:
①. วิธีการทำงาน
②. เงื่อนไขการหมดอายุ
③. ส่งผลกระทบต่อประสิทธิภาพของเซิร์ฟเวอร์
2. ดักหมายเลขคุกกี้:
IIS สามารถประหยัดได้ไม่เกิน 20 คุกกี้ทั่วไปแล้วกำหนดคุกกี้ใหม่
คำตอบคือใช้คุกกี้ 2D
ตัวอย่าง:
ทดสอบขีด จำกัด ของจำนวนคุกกี้ 1D:
test_cookies_1.asp
-
สำหรับ i = 1 ถึง 50
Response.cookies (cookies_ & i) = i
ต่อไป
-
test_cookies_2.asp
-
สำหรับ i = 1 ถึง 50
response.write request.cookies (cookies_ & i) & <br>
ต่อไป
-
ผล:
ก่อนอื่นเยี่ยมชม test_cookies_1.asp จากนั้น test_cookies_2.asp คุณพบอะไร?
test_cookies_3.asp
-
สำหรับ i = 1 ถึง 50
Response.cookies (cookies_ & i) = i
ต่อไป
สำหรับ i = 1 ถึง 50
response.write request.cookies (cookies_ & i) & <br>
ต่อไป
-
ผล:
ไม่มีคุกกี้หายไป! - - -
ทดสอบขีด จำกัด ของจำนวนคุกกี้ 2D:
test_cookies_4.asp
-
สำหรับ i = 1 ถึง 301
Response.cookies (tuht) (cookies_ & i) = i
ต่อไป
-
test_cookies_5.asp
-
สำหรับ i = 1 ถึง 301
Response.write request.cookies (tuht) (cookies_ & i) & <br>
ต่อไป
-
ผล:
ใช้วิธีนี้เพื่อใช้ 201*20 = 4020 คุกกี้! - - -
3. การตั้งค่าการหมดอายุของหน้าและบัฟเฟอร์
-
'หมดอายุและบัฟเฟอร์
response.buffer = true
Response.cacheControl = ไม่มี Chache
Response.expiresabsolute = Now ()-1
Response.exext = 0
-
คุณยังสามารถทำการตั้งค่าใน HTML:
<meta content = no-cache http-equiv = pragma>
<meta http-equiv = expires content = 0>
4. ตรวจสอบให้แน่ใจว่ามีการปลูกถ่าย
⑴. รวมไฟล์
<!-#รวมไฟล์ = top.asp->
⑵. ใช้ Server.Mappath เพื่อค้นหาเส้นทางไฟล์หลีกเลี่ยงการใช้เส้นทางสัมบูรณ์โดยตรงในหน้า
⑶. ลองใช้ส่วนประกอบเพื่อห่อหุ้มตรรกะทางธุรกิจ
5. ข้อผิดพลาดการดีบักเซิร์ฟเวอร์ภายใน 500
⑴. ตั้งค่า IIS เพื่อแสดงข้อความแสดงข้อผิดพลาดเฉพาะ
⑵. ทีละขั้นตอนการดีบักจากบนลงล่าง
⑶. พิมพ์ค่าของตัวแปรสำคัญบางตัวและตรวจสอบว่าคาดว่าจะเกิดขึ้น
⑷. การตัดสินข้อผิดพลาดตามประสบการณ์
7. ใช้งานเอกสาร Word
⑴. ติดตั้ง Office 2000 ซึ่งจำเป็นสำหรับ Word 2000
⑵. ตั้งค่าความปลอดภัยอินเทอร์เน็ตใน IE: เปิดใช้งานการควบคุมและปลั๊กอินทั้งหมดที่ใช้งานอยู่ทั้งหมด
⑶. ตั้งค่าสิทธิ์ไฟล์ของไดเรกทอรีการทำงานเพื่ออ่าน/แก้ไข/เขียนอินเทอร์เน็ตและระบบ
⑷. เขียนเทมเพลตหลักสูตร DOT
⑸. รหัสเฉพาะ:
opr_doc_inc.asp
-
Response.write dim var_num & ch (13)
Response.write var_num = 2 & Chr (13)
Response.write Dim Varstrings (2) & Chr (13)
Response.write varstrings (0) = & chr (34) & drafter: & chr (34) & Chr (13)
Response.write varstrings (1) = & Chr (34) & วันที่: & Chr (34) & Chr (13)
Response.write Dim Varvalues (2) & Chr (13)
Response.Write Varvalues (0) = & Chr (34) & Drafter: Tu Haitao & Chr (34) & Chr (13)
Response.Write Varvalues (1) = & Chr (34) & วันที่: & วันที่ () & Chr (34) & Chr (13)
-
ย่อยแทน (คำ)
ตั้งค่า myrange = word.activeDocument.content
สำหรับ i = 0 ถึง var_num - 1
เรียก myrange.find.execute (varstrings (i), เท็จ, เท็จ, เท็จ, เท็จ, เท็จ, เท็จ, เท็จ, เท็จ, เท็จ, เท็จ, varvalues (i), 2)
ต่อไป
สิ้นสุดย่อย
opr_doc.asp
-
'รับเส้นทางที่บันทึกไว้
path = server.mappath (opr_doc.asp)
PATH = ซ้าย (PATH, LEN (PATH) -11)
ชื่อไฟล์ = path & test.doc
W1 = Word.activeDocument.Saveas & Chr (32) & Chr (34) & Fileenames & Chr (34)
w2 = wapp.documents.open & Chr (32) & Chr (34) & FileNames & Chr (34)
-
<ภาษาสคริปต์ = vbscript>
เมื่อเกิดข้อผิดพลาดต่อไป
'สร้างเอกสาร Word ด้วยชื่อไฟล์ที่ระบุ
หรี่
Set word = createObject (word.application)
ถ้า err.number> 0 แล้ว
เกิดข้อผิดพลาดในการแจ้งเตือนโปรดยืนยันว่ามีไฟล์อยู่หรือไม่
อื่น
word.visible = false
word.documents.open <%response.write path%> course.dot
<%response.write w1%>
word.documents.close
ตั้งค่า word = ไม่มีอะไร
สิ้นสุดถ้า
<!-#รวมไฟล์ = opr_doc_inc.asp->
สลัว wapp
ตั้งค่า wapp = createObject (word.application)
ถ้า err.number> 0 แล้ว
เกิดข้อผิดพลาดในการแจ้งเตือน
อื่น
wapp.visible = true
<%response.write w2%>
โทรแทน (wapp)
ตั้งค่า wapp = ไม่มีอะไร
สิ้นสุดถ้า
</script>
เอฟเฟกต์: ตรวจสอบว่าไฟล์เอกสารถูกสร้างขึ้นหรือไม่? ไฟล์เอกสารและไฟล์เทมเพลตที่สร้างขึ้นใหม่นี้แตกต่างกันอย่างไร Drafter และวันที่เปลี่ยนไปหรือไม่? บันทึกและดูเนื้อหาของไฟล์เอกสารที่สร้างขึ้นใหม่
ที่แนบมา:
1. รหัสข้างต้นทั้งหมดได้รับการทดสอบและส่งผ่านภายใต้ Windows 2000 Server SP2+IIS 5.0+MS SQL Server 2000+Office 2000
2. กำหนดค่าฐานข้อมูล: หลักสูตรชื่อฐานข้อมูล, หลักสูตรผู้ใช้หลักสูตร _USER, รหัสผ่านหลักสูตร _Password, ไดรเวอร์ ODBC คือ Course_DSN, พอร์ตคือ 2433 สคริปต์ที่อธิบายโครงสร้างตารางอยู่ในไดเรกทอรีที่ใช้ร่วมกัน
3. โปรดดาวน์โหลดซอฟต์แวร์ ASP Fileup, JMail, Winzip 8.1 และ Line คำสั่ง Winzip ด้วยตัวเอง
4. ไฟล์สคริปต์ฐานข้อมูล:
ถ้ามีอยู่ (เลือก * จาก dbo.sysobjects โดยที่ id = object_id (n '[dbo]. [output_1]') และ ObjectProperty (id, n'isprocedure ') = 1)
ขั้นตอนการวาง [dbo]. [output_1]
ไป
ถ้ามีอยู่ (เลือก * จาก dbo.sysobjects โดยที่ id = object_id (n '[dbo]. [return_1]') และ ObjectProperty (id, n'isprocedure ') = 1)
ขั้นตอนการวาง [dbo]. [return_1]
ไป
ถ้ามีอยู่ (เลือก * จาก dbo.sysobjects โดยที่ id = object_id (n '[dbo]. [user_info_1]') และ ObjectProperty (id, n'isprocedure ') = 1)
ขั้นตอนการวาง [DBO]. [user_info_1]
ไป
ถ้ามีอยู่ (เลือก * จาก dbo.sysobjects โดยที่ id = object_id (n '[dbo]. [user_info_2]') และ ObjectProperty (id, n'isprocedure ') = 1)
ขั้นตอนการวาง [DBO]. [user_info_2]
ไป
ถ้ามีอยู่ (เลือก * จาก dbo.sysobjects โดยที่ id = object_id (n '[dbo]. [user_info_3]') และ ObjectProperty (id, n'isprocedure ') = 1)
ขั้นตอนการวาง [DBO]. [user_info_3]
ไป
ถ้ามีอยู่ (เลือก * จาก dbo.sysobjects โดยที่ id = object_id (n '[dbo]. [user_info]') และ ObjectProperty (id, n'isusertable ') = 1)
Drop Table [DBO]. [user_info]
ไป
สร้างตาราง [dbo]. [user_info] (
[id] [int] ตัวตน (1, 1) ไม่ใช่โมฆะ
[user_name] [varchar] (40) collate chinese_prc_ci_as ไม่เป็นโมฆะ
[รหัสผ่าน] [varchar] (20) collate chinese_prc_ci_as ไม่เป็นโมฆะ
) บน [หลัก]
ไป
เปลี่ยนตาราง [dbo]. [user_info] พร้อม nocheck เพิ่ม
ข้อ จำกัด [pk_user_info] กุญแจหลัก
-
[ชื่อผู้ใช้]
) บน [หลัก]
ไป
ตั้งค่า quoted_identifier ปิด
ไป
ตั้งค่า ansi_nulls
ไป
สร้างขั้นตอน [output_1]
@sid int output
เช่น
ตั้งค่า @sid = 2
ไป
ตั้งค่า quoted_identifier ปิด
ไป
ตั้งค่า ansi_nulls บน
ไป
ตั้งค่า quoted_identifier ปิด
ไป
ตั้งค่า ansi_nulls
ไป
สร้างขั้นตอน [return_1]
(@user_name varchar (40),@รหัสผ่าน varchar (20))
เช่น
ถ้ามีอยู่ (เลือก ID จาก user_info โดยที่ user_name =@user_name และรหัสผ่าน =@รหัสผ่าน)
กลับ 1
อื่น
กลับ 0
ไป
ตั้งค่า quoted_identifier ปิด
ไป
ตั้งค่า ansi_nulls บน
ไป
ตั้งค่า quoted_identifier บน
ไป
ตั้งค่า ansi_nulls
ไป
สร้างขั้นตอน [user_info_1]
(@user_name varchar (40),@รหัสผ่าน varchar (20))
เช่น
เลือก ID จาก user_info โดยที่ user_name =@user_name และรหัสผ่าน =@รหัสผ่าน
ไป
ตั้งค่า quoted_identifier ปิด
ไป
ตั้งค่า ansi_nulls บน
ไป
ตั้งค่า quoted_identifier ปิด
ไป
ตั้งค่า ansi_nulls
ไป
สร้างขั้นตอน [user_info_2]
(@user_name varchar (40),@รหัสผ่าน varchar (20))
เช่น
ตั้งค่า xact_abort บน
เริ่มธุรกรรม
ลบจาก user_info โดยที่ user_name =@user_name และรหัสผ่าน =@รหัสผ่าน
ทำธุรกรรม
ตั้งค่า XACT_ABORT
ไป
ตั้งค่า quoted_identifier ปิด
ไป
ตั้งค่า ansi_nulls บน
ไป
ตั้งค่า quoted_identifier ปิด
ไป
ตั้งค่า ansi_nulls
ไป
สร้างขั้นตอน [user_info_3] เป็น
เลือก * จาก user_info
ไป
ตั้งค่า quoted_identifier ปิด
ไป
ตั้งค่า ansi_nulls บน
ไป