บทความนี้ใช้ DLL ที่สร้างโดย VB เพื่อห่อหุ้มโค้ด ASP เพื่อเชื่อมต่อกับฐานข้อมูล (นำฐานข้อมูล Access เป็นตัวอย่าง)
ภายใต้สถานการณ์ปกติ เมื่อเราใช้ ASP เพื่อเชื่อมต่อกับฐานข้อมูล Access เรามักจะดำเนินการดังต่อไปนี้
'//Proconn.asp
-
สลัวโปรคอนน์
ตั้ง ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={ไดรเวอร์ Microsoft Access (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
'ฐานข้อมูล Access ที่เดิมคือ DB.mdb ถูกเปลี่ยนเป็นไฟล์ที่มีส่วนต่อท้ายเป็น DB.asp และรหัสผ่านฐานข้อมูลคือ 123
ถ้า err.Number <> 0 แล้ว
ResPonse.Write "ไม่มีลิงค์ไปยังฐานข้อมูล กรุณาตรวจสอบ"
การตอบสนองสิ้นสุด
อื่น
ResPonse.Write "การเชื่อมต่อฐานข้อมูลสำเร็จ"
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
%>
หากมีการกำหนดค่าเซิร์ฟเวอร์ ให้เข้าถึง Proconn.asp หากการเชื่อมต่อฐานข้อมูลสำเร็จ ข้อความ "การเชื่อมต่อฐานข้อมูลสำเร็จ" จะถูกส่งออก
อย่างไรก็ตาม ระดับความปลอดภัยของโค้ด asp ดังกล่าวต่ำมาก หากผู้อื่นเห็น asp ดั้งเดิม หากมีไฟล์ฐานข้อมูลนี้ ผู้อื่นก็สามารถเปิดฐานข้อมูลของคุณเพื่อดำเนินการได้อย่างง่ายดาย
มาถึงหน้าที่ของเราแล้ว จะสรุปเนื้อหาสำคัญเหล่านี้อย่างไร
ขั้นแรก คุณต้องกำหนดวิธีการ วิธีการ และวัตถุ
หลังจากตรวจสอบข้อมูลบางอย่างบนอินเทอร์เน็ตแล้ว ส่วนใหญ่จะถูกห่อหุ้มโดยใช้ VB เพื่อสร้าง DLL ดังนั้นเราควรนำวิธีนี้มาใช้ (แม้ว่าฉันจะไม่ได้ใช้ VB จริงๆ)
เพื่อกำหนด ดังนั้นวัตถุที่เราต้องห่อหุ้มคืออะไร ?
แวะมาดูทุกคนครับ
"driver={ไดรเวอร์ Microsoft Access (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
เป็นโค้ดที่สำคัญที่สุด ควรห่อหุ้มโค้ดนี้ไว้ใน DLL ที่สร้างด้วย VB จะดีกว่า
สาเหตุที่ไม่ทั้งหมด
สลัวโปรคอนน์
ตั้ง ProConn=Server.CreateObject("ADODB.CONNECTION")
ProConn.Open "driver={ไดรเวอร์ Microsoft Access (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")
ทั้งหมดถูกห่อหุ้ม (เนื่องจากมีคำแนะนำบนอินเทอร์เน็ตในการห่อหุ้มรหัสการเชื่อมต่อทั้งหมด) เพราะเมื่อไฟล์ asp อื่นอ้างอิง Proconn.asp
ฉันยังต้องมี ProConn อยู่ข้างในเพื่อดำเนินการอื่นๆ หากถูกห่อหุ้มไว้ การอ้างอิงและใช้งานจะไม่สะดวก
(คำอธิบายเรื่อง encapsulation object ข้างต้นเป็นความเห็นส่วนตัวของผมนะครับ เพื่อนบางคนบอกว่าการ encapsulation โดยรวมไม่มีผลกับการใช้งาน ProConn ผมไม่เข้าใจเรื่องนี้ครับ ถ้ารู้ช่วยบอกด้วยนะครับ)
ฉันแค่ต้องการสรุปส่วนที่สำคัญที่สุด ""driver={Microsoft Access Driver (*.mdb)};uid=;pwd=123;DBQ=" & Server.MapPath("DB.asp")"
เพื่อวิเคราะห์ย่อหน้านี้ . เนื้อหาของแพ็คเกจ
ครึ่งแรกเป็นสตริง:
"driver={ไดรเวอร์ Microsoft Access (*.mdb)};uid=;pwd=123;DBQ="
ใช้ & เพื่อเชื่อมครึ่งหลังของสตริงอื่นเข้าด้วยกัน
สตริงอื่นในช่วงครึ่งหลังคือค่าที่ส่งกลับของฟังก์ชันวัตถุ Server.MapPath
มาเริ่มกระบวนการดำเนินการห่อหุ้มกันดีกว่า
ขั้นแรก สร้างโครงการ ActiveX DLL ใหม่ภายใต้ VB เปลี่ยนชื่อของโครงการ Project1 เป็น ConDBDLL ?? เปลี่ยนชื่อของวิธี class1 เป็น cs
ชื่อโครงการและชื่อวิธีการจะถูกใช้เมื่อเรียก DLL นี้ คุณสามารถกำหนดได้ตามกฎการตั้งชื่อของคุณเอง แต่โปรดใช้อย่างระมัดระวัง
ส่วนของโค้ดของ DLL นี้ถูกเขียนดังนี้:
Dim rp As Response
Dim rq ตามคำขอ
Dim ap เป็นแอปพลิเคชัน
Dim sr ในฐานะเซิร์ฟเวอร์
Dim sn As Session
Public Sub OnStartPage (MyScriptingContext As ScriptingContext)
ตั้ง rp = MyScriptingContext.Response
ตั้ง rq = MyScriptingContext.Request
ตั้ง sr = MyScriptingContext.Server
ตั้ง ap = MyScriptingContext.Application
ตั้งค่า sn = MyScriptingContext.Session
สิ้นสุด
ย่อยสาธารณะย่อย OnEndPage()
ตั้งค่า rp = ไม่มีเลย
ตั้งค่า rq = ไม่มีเลย
ตั้งค่า sr = ไม่มีเลย
ตั้ง ap=ไม่มีอะไร
ตั้งค่า sn=ไม่มีอะไร
จบหมวดย่อย
'จำเป็นต้องมีคำสั่งข้างต้น ออบเจ็กต์ดั้งเดิมได้รับการทำให้ง่ายขึ้นและประมวลผลในฟังก์ชันพื้นฐานสอง
ฟังก์ชัน ConnectDB() As Variant
ConnectDB = "driver={Microsoft Access Driver (*.mdb)};uid =;pwd=123; DBQ="
สิ้นสุดฟังก์ชัน
'ฟังก์ชันด้านบนจะประมวลผลครึ่งแรกของสตริงและส่งกลับเนื้อหาของสตริงนี้โดยตรง
' นอกจากนี้ ให้กำหนดฟังก์ชันต่อไปนี้เพื่อประมวลผลเนื้อหาครึ่งหลัง
ฟังก์ชั่นสาธารณะ DBPath() เป็นตัวแปร
DBPath = sr.MapPath("DB.asp")
ฟังก์ชันสิ้นสุด
'โปรดทราบว่าข้างต้นใช้ sr อย่าใช้เป็นเซิร์ฟเวอร์ ตอนนี้เรา
ได้มาถึงขั้นตอนสำคัญแล้ว เพิ่มการอ้างอิงของ "Microsoft Active Server Pages ObjectContext Library" ให้กับโครงการนี้
หากต้องการเพิ่มวิธีการ ให้เลือก "โครงการ"->"อ้างอิง" ในเมนู และเลือกในกล่องโต้ตอบที่เปิดอยู่
อย่างไรก็ตาม เรายังต้องเลือก "ไลบรารี่ microsoft activeX data object 2.6"
เพื่อดำเนินการข้างต้น เราสามารถคอมไพล์และสร้าง DLL ได้ (อย่าลืมเปลี่ยนชื่อโครงการและชื่อเมธอดก่อนหน้านี้)
เตรียมไฟล์ฐานข้อมูล DB.asp (เขียนโดย DB .mdb ถูกสร้างขึ้นโดยการเปลี่ยนส่วนต่อท้าย รหัสผ่านคือ 123)
ต่อไปนี้คือโค้ดสำหรับการเรียกไฟล์ asp แบบห่อหุ้มที่เชื่อมต่อกับฐานข้อมูล:
'//ProConn.asp
-
สลัวโปรคอนน์
ตั้ง ProConn=Server.CreateObject("ADODB.CONNECTION")
DimConDB
ตั้งค่า ConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB เป็นวัตถุ DLL ที่สร้างขึ้น
Dim StrConn
'กำหนดสตริง
StrConn = ConDB.ConnectDB() & ConDB.DBPath()
'เชื่อมต่อทั้งสองส่วนเข้าด้วยกันเพื่อสร้างสตริง
ProConn.OpenStrConn
'ดำเนินการกับวัตถุฐานข้อมูล
-
เนื่องจากเป็น DLL ที่สร้างขึ้นเอง หลังจากคัดลอกไปยังไดเร็กทอรีที่เกี่ยวข้องแล้ว จะต้องลงทะเบียนก่อนจึงจะสามารถใช้งานได้
วิธีการลงทะเบียนดำเนินการใน "Run":
Regsvr32.exe lyfUpload.dll
วิธีการยกเลิกการลงทะเบียน DLL นี้คือ: Regsvr32.exe /u lyfUpload.dll
หลังจากการลงทะเบียนเสร็จสิ้น งานของเราก็เสร็จสิ้นโดยทั่วไปแล้ว ตอนนี้เราสามารถใช้วิธีการห่อหุ้มดังกล่าวเพื่อเชื่อมต่อกับเป้าหมายได้ ฐานข้อมูล
อย่างไรก็ตาม มีสิ่งหนึ่งที่ต้องให้ความสนใจเป็นพิเศษ:
เพราะ
DimConDB
ตั้งค่า ConDB=Server.CreateObject("ConDBDLL.Conn")
'ConDB เป็นวัตถุ DLL ที่สร้างขึ้น นี่คือวัตถุที่สร้างขึ้นใน ASP รวมถึง ProConn ด้วย จากนั้นเราอย่าลืมปล่อยวัตถุทั้งสองนี้ในไฟล์ ASP อื่น ๆ ที่ใช้ (อ้างอิง) ProConn.asp!
โปรคอน.ปิด
setProConn=ไม่มีอะไร
setConDB=ไม่มีอะไรเลย
มิฉะนั้นระบบจะล้นหลามมากขึ้นเนื่องจากวัตถุไม่ถูกปล่อยออกมา
เกี่ยวกับวิธีการห่อหุ้มโค้ด ASP เพื่อเชื่อมต่อกับฐานข้อมูล Access นี้ ฉันคิดว่าวิธีนี้ใช้ได้กับวิธีการเชื่อมต่อของฐานข้อมูลอื่นอย่างสมบูรณ์
ฉันคิดว่าวิธีการของฉันไม่ดีที่สุด หากมีข้อบกพร่องใด ๆ โปรดแก้ไขฉันหากคุณได้อ่าน ขอบคุณล่วงหน้า