เราคุ้นเคยกับการดำเนินการฐานข้อมูลใน ASP อยู่แล้วโดยการเรียก SQL Server Stored Procedure แต่คุณรู้หรือไม่ว่าเราสามารถสร้างและใช้ Stored Procedure ใน Access ฐานข้อมูลระดับเดสก์ท็อปได้เช่นกัน
Access + ASP เป็นการผสมผสานที่ยอดเยี่ยมสำหรับการพัฒนาเว็บแอปพลิเคชันขนาดเล็ก: เรียบง่าย รวดเร็ว และเข้ากันได้ แต่ประสิทธิภาพมักจะไม่สูง นอกจากนี้ ยังมีความไม่สะดวกในการใช้อ็อบเจ็กต์ ADODB.Connection และ Recordset เพื่อรันคำสั่ง SQL เนื่องจากค่าพารามิเตอร์ของคำสั่ง SQL พร้อมพารามิเตอร์มักจะถูกแยกเป็นสตริง ดังนั้นจึงมีปัญหา เช่น เครื่องหมายคำพูดเดี่ยว ข้อดีอย่างหนึ่งของการใช้โพรซีเดอร์ที่เก็บไว้คือสนับสนุนการจัดเตรียมค่าพารามิเตอร์คำสั่ง SQL เพิ่มเติม
ในความเป็นจริง กระบวนการที่เรียกว่า Stored Procedure ใน Access (2000 ขึ้นไป) นั้นเทียบไม่ได้กับ Stored Procedures ใน SQL Server ถือได้ว่าเป็น Stored Procedure Lite เท่านั้น ไม่รองรับคำสั่ง SQL หลายคำสั่ง ไม่รองรับคำสั่งเชิงตรรกะ (ฮ่าฮ่า ไม่ใช่ T-SQL เลย) ฯลฯ ฉันยังไม่รู้ว่ามันถูกคอมไพล์ล่วงหน้าหรือไม่ อย่างไรก็ตาม เช่นเดียวกับคลาสที่เรียกว่าที่ดำเนินการโดย VBScript นั้นถูกห่อหุ้มไว้เท่านั้นและส่งเสริมความสวยงามของโครงสร้างโค้ดและการนำโปรแกรมกลับมาใช้ใหม่ได้อย่างมาก กระบวนการจัดเก็บแบบน้ำหนักเบาของ Access ก็ควรเป็นประโยชน์สำหรับการกำหนดมาตรฐานและลดการดำเนินการฐานข้อมูลความน่าจะเป็นของข้อผิดพลาด และประสิทธิภาพอาจได้รับการปรับปรุง
ด้านล่างนี้ ผมจะอธิบายทีละขั้นตอนวิธีการสร้างกระบวนงานที่เก็บไว้ใน Access แล้วใช้ในโปรแกรม ASP
(1) สร้างขั้นตอนการจัดเก็บใน Access
ฉันไม่รู้ว่าทุกคนใช้ Access ได้ดีเพียงใด อย่างไรก็ตาม สำหรับฉัน มันเป็นเพียงเครื่องมือสำหรับสร้างไฟล์ฐานข้อมูล MDB เท่านั้น จากนั้นจึงสร้างตาราง ดัชนี ข้อจำกัด ฯลฯ ในอินเทอร์เฟซของ Access จบแล้ว~
แบบสอบถามใน Access มีบทบาทเป็นกระบวนงานที่เก็บไว้ ขั้นตอนหรือคำสั่งที่จัดเก็บของ Access ที่ฉันกล่าวถึงด้านล่างทั้งหมดอ้างถึงสิ่งนี้
สำหรับการสร้างแบบสอบถาม Access จะมีเครื่องมือสำหรับคนโง่ คล้ายกับตัวช่วยสร้างเมื่อสร้าง DataAdapter ใน VS.NET แต่ฉันชอบเขียนโค้ด SQL โดยตรง
จากนั้นคลิกปุ่มคิวรีทางด้านซ้ายบนอินเทอร์เฟซหลักของ Access จากนั้นดับเบิลคลิกสร้างคิวรีในมุมมองออกแบบทางด้านขวาเพื่อเปิดมุมมองการออกแบบคิวรี
ในเวลานี้ ตัวสร้างคิวรีแบบภาพจะปรากฏขึ้นก่อนอื่น เราจะเพิ่มตารางที่คำสั่ง SQL จำเป็นต้องเกี่ยวข้อง
หลังจากเพิ่มตารางแล้ว ให้คลิกขวาที่มุมมองการออกแบบและเลือกมุมมอง SQL เพื่อสลับไปยังหน้าต่างการแก้ไขโค้ด SQL
เอาล่ะ เรามาพูดถึงลักษณะของขั้นตอนการจัดเก็บของ Access กันดีกว่า
ความรู้สึกปัจจุบันของฉันคือแบบสอบถาม Access เป็นตัวตัดคำสำหรับคำสั่ง SQL อาจมีการปรับให้เหมาะสมบางอย่าง เช่น การคอมไพล์ล่วงหน้า เราไม่สามารถใช้การดำเนินการ ธุรกรรม การตัดสินเชิงตรรกะ ลูป ฯลฯ หลายรายการได้ เช่น การเขียนขั้นตอนการจัดเก็บ SQL Server...
แต่วัตถุประสงค์หลักของการใช้ขั้นตอนที่เก็บไว้ของ Access คือการใช้แบบสอบถามที่ได้รับจากพารามิเตอร์เพิ่มเติม เมื่อใช้ขั้นตอนที่เก็บไว้ เราจะไม่ต้องเผชิญกับปัญหาต่างๆ อีกต่อไปเมื่อประกบค่าพารามิเตอร์เข้ากับสตริงคำสั่ง SQL เช่น:
รหัส:
หรี่ sql
sql = SELECT * จากผู้ใช้โดยที่ชื่อผู้ใช้ = ' & ชื่อผู้ใช้ & '
ในโค้ดข้างต้น หากตัวแปรสตริงชื่อผู้ใช้มี 'เครื่องหมายคำพูดเดี่ยว ข้อผิดพลาดจะถูกรายงาน เราต้องแปลงด้วยตนเอง:
รหัส:
หรี่ sql
sql = SELECT * FROM Users WHERE UserName = ' & แทนที่ (ชื่อผู้ใช้, ', '') & ' ' ถูกแปลงเป็นเครื่องหมายคำพูดเดี่ยวสองอันติดต่อกัน
การใช้แบบสอบถามพร้อมพารามิเตอร์ คำสั่ง SQL ของเราสามารถเขียนเป็น:
รหัส:
หรี่ sql
sql = SELECT * จากผู้ใช้โดยที่ชื่อผู้ใช้ = @userName
จากนั้นเพียงส่งค่าพารามิเตอร์ @userName โดยใช้คุณสมบัติพารามิเตอร์ของอ็อบเจ็กต์ Command ซึ่งสะดวกและใช้งานง่ายมาก
รหัส:
ด้วยคำสั่ง
'สร้างวัตถุพารามิเตอร์
.Parameters.Append .CreateParameter(@ชื่อผู้ใช้)
'ระบุค่าสำหรับแต่ละพารามิเตอร์'
.Parameters(@userName) = ชื่อผู้ใช้
จบด้วย
ที่นี่เรายังอธิบายการใช้พารามิเตอร์ในขั้นตอนการจัดเก็บของ Access ไม่เหมือนกับขั้นตอนการจัดเก็บของ SQL Server ซึ่งใช้ตัวแปร @ เพื่อระบุพารามิเตอร์ จากนั้นส่งผ่านวัตถุพารามิเตอร์ที่มีชื่อเดียวกัน พารามิเตอร์ใน Access จะถูกระบุตามลำดับแทนที่จะเป็นชื่อ ไม่จำเป็นต้องระบุชื่อสำหรับพารามิเตอร์ที่ส่งเข้ามา คุณสามารถตั้งชื่อพารามิเตอร์ใน SQL แบบไม่เป็นทางการได้ ตราบใดที่ค่าพารามิเตอร์ถูกส่งผ่านก็ควรระบุตามลำดับ โดยที่พารามิเตอร์ปรากฏในคำสั่ง SQL โดยปกติแล้ว เราจะใช้วิธีการ Execute ของอ็อบเจ็กต์ Command และส่งผ่านอาร์เรย์ค่าพารามิเตอร์โดยตรงเพื่อดำเนินการ ~
รหัส:
cmd.Execute, Array (ชื่อผู้ใช้)
อีกตัวอย่างหนึ่ง หนึ่งในขั้นตอนการจัดเก็บการเข้าถึงของคุณถูกเขียนดังนี้:
รหัส:
เลือก * จากผู้ใช้ โดยที่ UserName = p_UserName และ BookTitle = p_bookTitle
คุณสามารถทำได้ด้วยวิธีนี้ โดยส่งผ่านอาร์เรย์ของค่าพารามิเตอร์ แต่ในลำดับที่ถูกต้อง:
รหัส:
cmd.Execute, Array (ชื่อผู้ใช้, ชื่อหนังสือ)
ตกลง ลองดูที่สองแบบสอบถามที่ใช้ในตัวอย่างของเรา หนึ่งคือการเขียนข้อมูล หลังจากเขียนคำสั่ง SQL แล้ว ให้บันทึกและตั้งชื่อ
รหัสขั้นตอนการจัดเก็บอื่นที่อ่านข้อมูล
(2) การใช้ขั้นตอนการจัดเก็บ
จากนั้นเราสามารถเรียกขั้นตอนการจัดเก็บเหล่านี้ในโปรแกรม ASP
ที่นี่คุณจะเห็นว่าทำไมฉันถึงบอกว่าแบบสอบถามใน Access เป็นขั้นตอนการจัดเก็บ - คุณสมบัติ CommandType ของวัตถุ Command ของเราถูกตั้งค่าเป็น 4 ซึ่งก็คือ Stored Proc!
ดังนั้น...
รหัสต่อไปนี้ง่ายมาก:
รหัส:
-
ตัวเลือกที่ชัดเจน
ดิมส
สุ่ม
s = รอบ * 100
คอนเน็กติ่มซำ cmd
ตั้งค่า conn = Server.CreateObject (ADODB.Connection)
ตั้งค่า cmd = Server.CreateObject(ADODB.Command)
ผู้ให้บริการ conn.Open=Microsoft.Jet.OLEDB.4.0;
ด้วยคำสั่ง
.ActiveConnection = เชื่อมต่อ
.CommandType = &H0004 'ขั้นตอนการจัดเก็บ'
.CommandText = เพิ่มข้อมูลใหม่
จบด้วย
cmd.Execute, Array(CStr(ตอนนี้()), CSng(s))
ด้วยคำสั่ง
.ActiveConnection = เชื่อมต่อ
.CommandType = &H0004 'ขั้นตอนการจัดเก็บ'
.CommandText = GetData
จบด้วย
ผลลัพธ์สลัวRS, resultArray
ตั้งค่า resultRS = cmd.Execute(, Null)
ถ้าไม่เป็นผลRS.EOF แล้ว
resultArray = resultRS.GetRows()
สิ้นสุดถ้า
ตั้งค่า resultRS = ไม่มีเลย
ตั้งค่า cmd = ไม่มีเลย
เชื่อมต่อปิด
ตั้งค่าคอน = ไม่มีอะไร
ตอบกลับเขียน <ul>
ดิม ไอ
สำหรับ i = 0 ถึง UBound (resultArray, 2)
Response.Write <li> & resultArray(0, i)
Response.Write & resultArray(1, i)
Response.Write & resultArray(2, i)
การตอบกลับเขียน </li>
ต่อไป
การตอบกลับ เขียน </ul>
-