การใช้ขั้นตอนการจัดเก็บเพื่อใช้การเข้าถึงฐานข้อมูล ASP
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-06-24 17:21:43
1. ภาพรวมของ ADO
ActiveX Data Objects (ADO) เป็นเทคโนโลยีที่ใช้งานง่ายและปรับขนาดได้สำหรับการเพิ่มการเข้าถึงฐานข้อมูลไปยังเว็บเพจของคุณ คุณสามารถใช้ ADO เพื่อเขียนสคริปต์ที่กระชับและปรับขนาดได้เพื่อเชื่อมต่อกับแหล่งข้อมูลที่เข้ากันได้กับ OLE DB เช่น ฐานข้อมูล สเปรดชีต ไฟล์ข้อมูลตามลำดับ หรือไดเร็กทอรีอีเมล OLE DB เป็นอินเทอร์เฟซการเขียนโปรแกรมระดับระบบที่มีชุดอินเทอร์เฟซ COM มาตรฐานเพื่อแสดงฟังก์ชันของระบบการจัดการฐานข้อมูล เมื่อใช้โมเดลออบเจ็กต์ของ ADO คุณสามารถเข้าถึงอินเทอร์เฟซเหล่านี้ได้อย่างง่ายดาย (โดยใช้ภาษาสคริปต์ เช่น VBScript หรือ JScript) และเพิ่มฟังก์ชันการทำงานของฐานข้อมูลลงในแอปพลิเคชันเว็บของคุณ นอกจากนี้ คุณสามารถใช้ ADO เพื่อเข้าถึงฐานข้อมูลที่สอดคล้องกับ Open Database Connectivity (ODBC)
หากคุณเป็นผู้เขียนสคริปต์ที่มีความรู้เกี่ยวกับการเชื่อมต่อฐานข้อมูล คุณจะพบว่าไวยากรณ์คำสั่งของ ADO นั้นเรียบง่ายและใช้งานง่าย หากคุณเป็นนักพัฒนาที่มีประสบการณ์ คุณจะประทับใจกับการเข้าถึงที่ปรับขนาดได้และประสิทธิภาพสูงที่ ADO มอบให้กับแหล่งข้อมูลที่หลากหลาย
2. วิธีการทั่วไปในการเข้าถึงฐานข้อมูล การเข้าถึงฐานข้อมูลในการเข้าถึงหน้าเว็บทั่วไปนั้นดำเนินการตามขั้นตอนต่อไปนี้ ขั้นแรก ให้สร้างออบเจ็กต์ของอินเทอร์เฟซ ADODB.Connection จากนั้นจึงผูกแหล่งข้อมูลที่เกี่ยวข้องกับออบเจ็กต์นี้ (คุณ สามารถใช้แหล่งข้อมูลที่มีชื่อและแหล่งข้อมูลที่ไม่มีชื่อ) สร้างหรือไม่สร้างชุดบันทึกได้ตามต้องการ จากนั้นลิงก์ไปยังแหล่งข้อมูลและใช้วิธีดำเนินการหรือเปิดเพื่อดำเนินการตารางที่เกี่ยวข้อง
วิธีการทั่วไปของ ASP ในการเข้าถึงฐานข้อมูล:
-
ตั้งค่า oConn=Server.CreateObject("ADODB.Connection")
ตั้งค่า oRS=Server.CreateObject("ADODB.RecordSet")
set strConn="Provider=SQLOLEDB;User ID=sa; Initial Catalog=Pubs;Data Source=" &request.ServerVariables("SERVER_NAME")
oConn.open strConn
set ORS=oConn.execute("select * from test")
-
ข้างต้นจะแนะนำวิธีใช้ OLEDB สำหรับลิงก์ที่ไม่มีชื่อ ให้ตั้งค่าเป็นการทดสอบแหล่งข้อมูล และชื่อผู้ใช้และรหัสผ่านจะว่างเปล่า คุณจะต้องเขียนคำสั่งข้างต้นใหม่ oConn.open "test" ,"""
ข้างต้นจะแนะนำวิธีการทั่วไปในการเข้าถึงฐานข้อมูลในหน้าเว็บ สิ่งเหล่านี้มีความสมบูรณ์และมีประโยชน์มากแล้ว หากในทางปฏิบัติ การเข้าถึงข้อมูลบางอย่างซับซ้อนเกินไป จะต้องอาศัยคำสั่ง SQL เกือบ 10 รายการจึงจะเขียนวิธีนี้ได้ ยังขาดอยู่เล็กน้อย นอกจากนี้ บางครั้งจำเป็นต้องใช้กระบวนการประมวลผลเดียวกันในหน้าเว็บต่างๆ และนี่ถือเป็นข้อได้เปรียบมากที่สุดในการใช้ขั้นตอนการจัดเก็บ และถูกจัดเก็บไว้ในฐานข้อมูลของเซิร์ฟเวอร์ระยะไกล
3. การใช้ขั้นตอนการจัดเก็บใน ASP ADO ให้การเข้าถึงขั้นตอนการจัดเก็บซึ่งต้องใช้วัตถุคำสั่ง บนวัตถุนี้ผู้ใช้สามารถดำเนินการขั้นตอนการจัดเก็บของเซิร์ฟเวอร์ SQL ได้โดยตรงและพารามิเตอร์ที่จำเป็นในคำสั่งสามารถเป็นได้ มันถูกประมวลผลโดยใช้คุณสมบัติ Pamaters
โปรดทราบว่าเพื่อให้วัตถุ Command ถูกต้อง จะต้องเชื่อมโยงกับวัตถุการเชื่อมต่อโดยการตั้งค่าคุณสมบัติ ActiveConnection ของวัตถุ Command เป็นวัตถุการเชื่อมต่อ ถ้าไม่สามารถระบุวัตถุการเชื่อมต่อได้ วัตถุ Command จะไม่ถูกต้องจนกว่าคุณจะเชื่อมโยงกับการเชื่อมต่อ
< ดิม โอคอน
ดิม strConn
Dim oCmd
จางหรือหรือ1
สลัวอ่า
dimsql
ตั้งค่า oConn = Server.CreateObject("ADODB.Connection")
ตั้ง oCmd = Server.CreateObject("ADODB.Command")
set ors1=Server.CreateObject("ADODB.RecordSet")
'เปิดลิงก์ ใช้ ID ผู้ใช้ SA รหัสผ่านว่างเปล่า เชื่อมต่อกับฐานข้อมูลบนเซิร์ฟเวอร์ภายในเครื่อง'
strConn="Provider=SQLOLEDB;User ID=sa;Initial Catalog=pubs;Data Source="& Request.ServerVariables("SERVER_NAME")
'หากคุณเชื่อมต่อกับฐานข้อมูลระยะไกล ที่อยู่ฐานข้อมูลคือ 10.82.88.105 ผู้ใช้คือ tmp และรหัสผ่านคือ 123
'สามารถใช้วิธีการต่อไปนี้' strConn="Provider=SQLOLEDB;User ID=tmp;pwd=123;Initial Catalog=tjbb;Data Source="& "10.82.88.110"
oConn.เปิด strConn
'เพิ่มลิงค์ที่สร้างขึ้นไปยังแอ็ตทริบิวต์ลิงค์ที่ใช้งานของคำสั่ง
ตั้งค่า oCmd.ActiveConnection = oConn
'ตั้งค่าการเรียกขั้นตอนการจัดเก็บตามรอยัลตี้และพารามิเตอร์พารามิเตอร์คือโดย? แนะนำ
oCmd.CommandText = "{call byroyalty(?)}"
oCmd.Parameters.Append oCmd.CreateParameter("@Percentage", adInteger, adParamInput)
' ระบุพารามิเตอร์อินพุต
oCmd("@เปอร์เซ็นต์") = 75
'การใช้พารามิเตอร์อินพุตข้างต้นใน asp สามารถทำได้โดยไม่ต้องใช้แอตทริบิวต์พารามิเตอร์ เพียงใช้ & ใน VB เพื่อสร้างข้อมูลที่เกี่ยวข้องในข้อความคำสั่ง' การใช้พารามิเตอร์มีประโยชน์อย่างยิ่งระหว่างเอาท์พุต
ตั้งค่า oRs = oCmd.Execute
ors1.activeconnection=oconn
'คำสั่ง SQL ทั่วไปยังสามารถใช้ในออบเจ็กต์คำสั่งนี้โดยใช้แอตทริบิวต์ Source และ Open โดยที่ Source ชี้ให้เห็นแหล่งข้อมูล
ors1.source ="select * จาก [tmptable] โดยที่ปี=2000 และเดือน=1"
ors1.cursorttype=adopenstatic
ors1.เปิด
-
4. ความรู้เบื้องต้นเกี่ยวกับขั้นตอนการจัดเก็บใน SQL คุณสามารถเขียนขั้นตอนการจัดเก็บสำหรับการเข้าถึงฐานข้อมูลได้โดยใช้ภาษา SQL
สร้าง PROC[EDURE] Procedure_name [;หมายเลข]
-
{@parameter data_type} [แปรผัน] [= ค่าเริ่มต้น] [เอาต์พุต]
-
[,...n]
[กับ
-
คอมไพล์ใหม่
|. การเข้ารหัส
|. คอมไพล์ใหม่, การเข้ารหัส
-
-
[สำหรับการจำลอง]
เช่น
sql_statement [...n]
เนื้อหาภายใน [ ] เป็นทางเลือก ในขณะที่เนื้อหาภายใน () เป็นสิ่งจำเป็น
ตัวอย่าง: หากผู้ใช้ต้องการสร้างขั้นตอนการจัดเก็บ Select_delete เพื่อลบบันทึกในตาราง tmp ก็สามารถเขียนเป็น:
สร้าง Proc select_del As
ลบ tmp
ตัวอย่าง: ผู้ใช้ต้องการสอบถามขั้นตอนการจัดเก็บสำหรับข้อมูลของปีหนึ่งๆ ในตาราง tmp
สร้าง proc select_query @year int เป็น
เลือก * จาก tmp โดยที่ year=@year
ที่นี่ @year คือตัวอย่างพารามิเตอร์ของขั้นตอนการจัดเก็บ: ขั้นตอนการจัดเก็บนี้เริ่มต้นจากโหนด n เพื่อค้นหาโหนดหลักระดับบนสุด กระบวนการที่ใช้บ่อยนี้สามารถดำเนินการได้โดยขั้นตอนการจัดเก็บและสามารถนำมาใช้ซ้ำในหน้าเว็บเพื่อให้บรรลุผล การแบ่งปัน
ว่างเปล่า: บ่งชี้ว่าโหนดนั้นเป็นโหนดระดับบนสุด
fjdid (หมายเลขโหนดหลัก)
โหนด n ไม่ว่างเปล่า: ระบุหมายเลขโหนดหลักของโหนด
dwmc (ชื่อหน่วย)
สร้าง proc search_dwmc @dwidold int,@dwmcresult varchar (100) เอาต์พุต
เช่น
ประกาศ @stop int
ประกาศ @result varchar (80)
ประกาศ @dwmc varchar (80)
ประกาศ @dwid int
ตั้งค่า nocount บน
ตั้ง @หยุด=1
ตั้ง @dwmc=""
เลือก @dwmc=dwmc,@dwid=convert(int,fjdid) จาก jtdw โดยที่ id=@dwidold
ตั้งค่า @result=rtrim(@dwmc)
ถ้า @dwid=0
ตั้ง @หยุด=0
ในขณะที่ (@stop=1) และ (@dwid<>0)
เริ่ม
ตั้ง @dwidold=@dwid
เลือก @dwmc=dwmc,@dwid=convert(int,fjdid) จาก jtdw โดยที่ id=@dwidold
ถ้า @@rowcount=0
ตั้ง @dwmc=""
อื่น
ตั้งค่า @result=@dwmc+@result
ถ้า (@dwid=0) หรือ (@@rowcount=0)
ตั้ง @หยุด=0
อื่น
ดำเนินการต่อ
จบ
ตั้งค่า @dwmcresult=rtrim(@result)
การใช้ขั้นตอนการจัดเก็บอย่างสมบูรณ์และสมเหตุสมผลสามารถปรับปรุงปริมาณงานของเซิร์ฟเวอร์ได้ ผู้เขียนใช้ขั้นตอนการจัดเก็บเพื่อรับข้อมูลจากเกือบ 20 ตารางและรวมเข้าด้วยกันเป็นตารางทั่วไปสร้างบันทึกได้เกือบ 20,000 รายการ และเวลาที่ต้องใช้คือประมาณ 7 วินาที หากเป็นเช่นนี้ การดำเนินงานสามารถปรับปรุงการพัฒนาเซิร์ฟเวอร์ให้อยู่ในระดับที่สูงขึ้นด้วยความช่วยเหลือของหน้าเว็บไดนามิกที่เหมาะสมมากขึ้น ใช้ขั้นตอนการจัดเก็บอย่างเต็มที่ ซึ่งสามารถลดการประมวลผลหนักที่เกิดจากการออกแบบเว็บ เพื่อให้รหัสที่เขียนสามารถแบ่งปันและนำไปใช้อย่างสมเหตุสมผล และ รหัสสามารถซ่อนอยู่ในฐานข้อมูลของเซิร์ฟเวอร์ เทคโนโลยีบางอย่างจะถูกเก็บเป็นความลับ นี่เป็นคุณลักษณะสำคัญของขั้นตอนการจัดเก็บ ฉันหวังว่าผู้อ่านจะได้รับประโยชน์จากมัน