แนะนำ: ใช้ SQL-DMO เพื่อสร้างแอปพลิเคชันการสำรองข้อมูลและการตรวจสอบ ASP ภาพรวมวัตถุการจัดการแบบกระจาย SQL (SQL-DMO) ให้นักพัฒนามีวิธีการทำงานทั่วไปโดยใช้โปรแกรมและภาษาสคริปต์ดังนั้นจึงขยายการทำงานของ SQL Server บทความนี้พูดถึงวิธีการใช้ SQL-DMO อย่างชาญฉลาดเพื่อสร้าง
1. เลือกคำสั่ง
ในโลก SQL การดำเนินการขั้นพื้นฐานที่สุดคือคำสั่ง SELECT เมื่อใช้ SQL โดยตรงภายใต้เครื่องมือฐานข้อมูลหลายคนจะคุ้นเคยกับการดำเนินการต่อไปนี้:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: เลือกอะไร จากสิ่งใด เกณฑ์ที่ |
การดำเนินการคำสั่งข้างต้นจะสร้างแบบสอบถามที่เก็บผลลัพธ์
ในไฟล์หน้า ASP คุณยังสามารถใช้ไวยากรณ์ทั่วไปด้านบน แต่สถานการณ์แตกต่างกันเล็กน้อย เมื่อการเขียนโปรแกรม ASP เนื้อหาของคำสั่ง SELECT ควรกำหนดให้กับตัวแปรเป็นสตริง:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: SQL = เลือกสิ่งที่มาจากที่เกณฑ์ |
โอเคฉันเข้าใจว่า SQL พูดภายใต้ ASP ได้อย่างไรแล้วทำแบบเดียวกัน ตราบใดที่คุณตอบสนองความต้องการของคุณโหมด SQL แบบสอบถามแบบดั้งเดิมและแบบสอบถามแบบมีเงื่อนไขจะมีประโยชน์
ตัวอย่างเช่นคุณอาจสันนิษฐานได้ว่ามีตารางข้อมูลในฐานข้อมูลของคุณคือผลิตภัณฑ์และตอนนี้คุณต้องการดึงบันทึกทั้งหมดในตารางนี้ จากนั้นคุณเขียนรหัสต่อไปนี้:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: SQL = เลือก * จากผลิตภัณฑ์ |
ฟังก์ชั่นของคำสั่ง Code-SQL ด้านบนคือการดึงข้อมูลทั้งหมดในตาราง หลังจากดำเนินการระเบียนทั้งหมดในตารางข้อมูลจะถูกเลือก อย่างไรก็ตามหากคุณต้องการลบคอลัมน์เฉพาะออกจากตารางเช่น p_name จากนั้นคุณไม่สามารถใช้อักขระได้ * Wildcard คุณต้องพิมพ์ชื่อของคอลัมน์เฉพาะและรหัสมีดังนี้:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: sql = เลือก p_name จากผลิตภัณฑ์ |
หลังจากดำเนินการสืบค้นข้างต้นเนื้อหาทั้งหมดในตารางผลิตภัณฑ์และคอลัมน์ P_NAME จะถูกเลือก
2. ตั้งค่าเงื่อนไขการสอบถามสำหรับที่ประโยค
ตัวอย่างเช่นหากคุณวางแผนที่จะนำบันทึก P_NAME เท่านั้นและชื่อของบันทึกเหล่านี้จะต้องเริ่มต้นด้วยตัวอักษร W คุณต้องใช้ข้อต่อไปนี้โดยที่ประโยค:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: sql = เลือก p_name จากผลิตภัณฑ์ที่ p_name ชอบ 'w%' |
คำหลักที่ตามมาด้วยเงื่อนไขที่ใช้ในการกรองข้อมูล ด้วยความช่วยเหลือของเงื่อนไขเหล่านี้ข้อมูลที่ตรงตามมาตรฐานบางอย่างเท่านั้นที่จะถูกสอบถาม ในตัวอย่างข้างต้นผลลัพธ์การสืบค้นจะได้รับบันทึก P_NAME เท่านั้นที่มีชื่อเริ่มต้นด้วย w
ในตัวอย่างข้างต้นสัญลักษณ์เปอร์เซ็นต์ (%) หมายความว่าแบบสอบถามส่งคืนรายการบันทึกทั้งหมดที่เริ่มต้นด้วยตัวอักษร W และตามด้วยข้อมูลใด ๆ หรือแม้แต่ไม่มีข้อมูล ดังนั้นเมื่อดำเนินการค้นหาข้างต้นเวสต์และวิลโลว์จะถูกเลือกจากตารางผลิตภัณฑ์และเก็บไว้ในแบบสอบถาม
อย่างที่คุณเห็นเพียงออกแบบคำสั่ง SELECT อย่างละเอียดคุณสามารถ จำกัด จำนวนข้อมูลที่ส่งคืนในชุดบันทึกและการคิดเพิ่มเติมจะตรงตามความต้องการของคุณเสมอ
นี่เป็นเพียงจุดเริ่มต้นของการใช้การใช้ SQL เพื่อช่วยให้คุณค่อยๆใช้คำสั่ง Select ที่ซับซ้อนลองมาดูคำศัพท์มาตรฐานที่สำคัญ: ตัวดำเนินการเปรียบเทียบ สิ่งเหล่านี้มักจะใช้เมื่อคุณสร้างสตริงที่เลือกของคุณเองเพื่อรับข้อมูลเฉพาะ
โดยที่ข้อพื้นฐานของประโยค
เมื่อคุณเริ่มสร้างประโยคที่วิธีที่ง่ายที่สุดคือใช้สัญลักษณ์เปรียบเทียบมาตรฐานซึ่งคือ <, <=,>,> =, <> และ = เห็นได้ชัดว่าคุณจะเข้าใจความหมายและผลลัพธ์เฉพาะของรหัสต่อไปนี้ในไม่ช้า:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: เลือก * จากผลิตภัณฑ์ที่ p_price> = 199.95 เลือก * จากผลิตภัณฑ์ที่ p_price <> 19.95 เลือก * จากผลิตภัณฑ์ที่ p_version = '4' |
หมายเหตุ: ที่นี่คุณจะสังเกตเห็นว่าหมายเลข 4 ในตัวอย่างสุดท้ายถูกล้อมรอบด้วยเครื่องหมายคำพูดเดียว เหตุผลก็คือในตัวอย่างนี้ 4 เป็นประเภทข้อความมากกว่าประเภทตัวเลข
3. ตัวดำเนินการเปรียบเทียบ: ไม่ชอบและระหว่าง
ตัวดำเนินการเปรียบเทียบระบุช่วงเนื้อหาที่ข้อมูลถูกดึงมาจากตาราง คุณสามารถใช้พวกเขาเพื่อสร้างตัวกรองเพื่อ จำกัด ขอบเขตของชุดบันทึกทำให้มันประหยัดเฉพาะข้อมูลที่คุณสนใจภายใต้งานที่กำหนด
คุณได้เห็นการใช้งานของเช่นในตัวอย่างที่คุณหยิบบันทึกส่วนหัวของ W ด้านบน ปัจจัยที่คล้ายกันเป็นสัญลักษณ์ที่มีประโยชน์มาก อย่างไรก็ตามในหลายกรณีการใช้มันอาจทำให้คุณมีข้อมูลมากเกินไปดังนั้นจึงเป็นการดีที่สุดที่จะใช้สมองของคุณและคิดเพิ่มเติมเกี่ยวกับข้อมูลที่คุณต้องการได้รับก่อนที่จะใช้ สมมติว่าคุณต้องการที่จะนำหมายเลข SKU 5 หลักและจุดเริ่มต้นของมันคือ 1 และสิ้นสุดคือ 5 จากนั้นคุณสามารถใช้ขีดล่าง (_) แทนสัญลักษณ์ %:
SQL = SELECT * จากผลิตภัณฑ์ที่ P_SKU ชอบ '1___5'
ขีดล่างแสดงถึงตัวละครใด ๆ ดังนั้นเมื่อคุณป้อน 1___5 การค้นหาของคุณจะถูก จำกัด อยู่ที่ช่วง 5 หลักที่เป็นไปตามโหมดเฉพาะ
หากคุณต้องการทำสิ่งที่ตรงกันข้ามให้ค้นหารายการ SKU ทั้งหมดที่ไม่ตรงกับโหมด 1___5 จากนั้นคุณเพียงแค่ต้องเพิ่มไม่ชอบในตัวอย่างคำสั่งตอนนี้
ระหว่าง
สมมติว่าคุณต้องการแยกข้อมูลภายในช่วงที่กำหนดและคุณรู้จุดเริ่มต้นและจุดสิ้นสุดของช่วงล่วงหน้าจากนั้นคุณอาจใช้คำระหว่างการตัดสิน ตอนนี้สมมติว่าคุณต้องการเลือกบันทึกที่มีช่วงระหว่าง 1 ถึง 10 ในตารางที่กำหนด คุณสามารถใช้ระหว่างดังนี้:
…ที่ไหน ID ระหว่าง 1 ถึง 10
หรือคุณสามารถใช้ประโยคการตัดสินทางคณิตศาสตร์ที่คุ้นเคย:
…โดยที่ id> = 1 และ id> = 10
4. แถลงการณ์ร่วม
คำสั่ง SQL ที่เราได้พูดคุยเกี่ยวกับตอนนี้ค่อนข้างง่าย หากพวกเขาสามารถผ่านการสืบค้น Loop STANGRATE STANGRE STANGRATH ข้อความเหล่านี้ยังสามารถตอบสนองความต้องการที่ซับซ้อนมากขึ้น อย่างไรก็ตามทำไมคุณต้องยึดติดกับระดับพื้นฐานของการลองใช้? คุณสามารถเพิ่มสัญลักษณ์อื่น ๆ เช่นและหรือไม่เพื่อให้ฟังก์ชั่นที่ทรงพลังยิ่งขึ้น
คำสั่ง SQL ต่อไปนี้เป็นตัวอย่าง:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: sql = เลือก c_firstname, c_lastname, c_email จากลูกค้าที่ c_email ไม่ได้เป็น null และ c_purchase = '1' หรือ c_purchase = '2' และ c_lastname เช่น 'a%' |
ด้วยความรู้ SQL ที่คุณมีอยู่ในปัจจุบันตัวอย่างข้างต้นไม่ยากที่จะอธิบาย แต่คำสั่งข้างต้นไม่อนุญาตให้คุณเห็นอย่างชัดเจนว่าประโยคที่มีเงื่อนไขถูกจับเป็นคำสั่ง SQL เดียวได้อย่างไร
คำสั่งหลายบรรทัด
หากคำสั่ง SQL ไม่ง่ายที่จะเข้าใจคุณอาจย่อยสลายคำสั่งทั้งหมดเป็นหลายบรรทัดของรหัสแล้วค่อยๆเพิ่มส่วนประกอบต่าง ๆ ของคำสั่ง Query ตามตัวแปรที่มีอยู่และเก็บไว้ในตัวแปรเดียวกัน:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: sql = เลือก c_firstname, c_lastname, c_emailaddress, c_phone SQL = SQL & จากลูกค้า sql = sql & โดยที่ c_firstname เช่น 'a%' และ c_emailaddress ไม่เป็นโมฆะ sql = sql & สั่งซื้อโดย c_lastname, c_firstname |
โดยประโยคสุดท้ายตัวแปร SQL มีคำสั่ง SELECT ทั้งหมดต่อไปนี้:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: เลือก c_firstname, c_lastname, c_emailaddress, c_phone จากลูกค้าที่ c_firstname เช่น 'a%' และ c_emailaddress ไม่มีคำสั่ง null โดย c_lastname, c_firstname |
หลังจากย่อยสลายประโยคทั้งหมดข้างต้นมันจะอ่านได้ง่ายขึ้น! เมื่อทำการดีบักคุณอาจเต็มใจที่จะพิมพ์ตัวละครอีกสองสามตัวเพื่อเปลี่ยนโปรแกรมและอ่านได้ดีขึ้น แต่คุณต้องจำไว้ว่าคุณต้องเพิ่มช่องว่างก่อนปิดเครื่องหมายคำพูดหรือหลังจากเปิดเครื่องหมายคำพูดเพื่อที่คุณจะได้ไม่ใส่คำสองสามคำเข้าด้วยกันเมื่อเชื่อมต่อสตริง
5. เริ่มดำเนินการ
หลังจากเรียนรู้การก่อสร้างและการใช้คำสั่งที่เลือกแล้วก็ถึงเวลาที่จะเรียนรู้วิธีการใช้งาน ภายใต้เครื่องมือฐานข้อมูลที่คุณมีซึ่งอาจหมายความว่าคุณต้องกดปุ่มด้วยคำว่า "การดำเนินการ" บนหน้าเว็บ ASP คำสั่ง SQL สามารถดำเนินการได้ทันทีหรือสามารถเรียกได้ว่าเป็นขั้นตอนที่เก็บไว้
เมื่อคำสั่ง SQL ถูกสร้างขึ้นคุณต้องพยายามเข้าถึงผลลัพธ์การสืบค้น เห็นได้ชัดว่ากุญแจสำคัญที่นี่คือ ASP Recordset เพื่อให้ได้ประโยชน์สูงสุดจากทักษะ SQL ของคุณที่คุณคุ้นเคยมากขึ้นคุณต้องปรับชุดบันทึกที่ใช้กันมากที่สุดในเว็บเพจ ASP ปกติ:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: สลัวอาร์เอส ตั้งค่า rs = server.createObject (adodb.recordset) Rs.Open SQL, Conn, 1,2 |
นี่คือการประกาศการเชื่อมต่อฐานข้อมูลและการปรับเปลี่ยนเพียงอย่างเดียวคือการใช้ตัวแปรที่มีคำสั่ง SQL เพื่อแทนที่ชื่อของตารางข้อมูลที่จะสอบถาม
ข้อดีอย่างหนึ่งของวิธีการนี้คือคุณสามารถระบุประเภทเคอร์เซอร์ (ดังที่แสดงใน 1 และ 2 ด้านบน)
ดำเนินการ SQL
นอกจากนี้คุณยังสามารถสร้าง RecordSets โดยใช้รหัสขนาดกะทัดรัดเพื่อเรียกใช้คำสั่ง SQL ต่อไปนี้คือไวยากรณ์:
สลัวอาร์เอส
ตั้งค่า rs = conn.execute (SQL)
ในตัวอย่างด้านบน SQL ที่คุณเห็นเป็นตัวแปรที่คุณเก็บคำสั่ง SQL Select ของคุณเอง บรรทัดของรหัสนี้เรียกใช้คำสั่ง SQL (หรือสอบถามฐานข้อมูล) เลือกข้อมูลและจัดเก็บข้อมูลใน RecordSet ในตัวอย่างด้านบนตัวแปร RS ข้อเสียเปรียบหลักของวิธีการนี้คือคุณไม่สามารถเลือกประเภทของเคอร์เซอร์ที่คุณต้องการใช้ ชุดเร็กคอร์ดจะถูกเปิดด้วยเคอร์เซอร์ไปข้างหน้าเสมอ
เนื่องจากเคอร์เซอร์คุณอาจคุ้นเคยกับสองวิธีในการสร้างชุดบันทึก การดำเนินการค้นหาโดยตรงจะบันทึกเวลาที่ใช้ในการพิมพ์อักขระ แต่ในกรณีนั้นคุณต้องใช้เคอร์เซอร์เริ่มต้นซึ่งมักจะล้มเหลวในการทำงานตามปกติ ไม่ว่าคุณจะใช้วิธีใดความแตกต่างที่ยิ่งใหญ่ที่สุดระหว่างทั้งสองนั้นไม่มีอะไรมากไปกว่ารหัสที่ได้รับการขัดเกลาหรือไม่ โดยไม่คำนึงถึงฟิลด์ที่คุณได้รับหรือมาตรฐานของคุณคืออะไรและไม่ว่าคุณจะจัดเก็บข้อมูลอย่างไรการใช้ชุดระเบียนสไตล์ SQL จะมีขนาดเล็กกว่าชุดระเบียนมาตรฐานที่เปิดบน ASP ไม่ต้องพูดถึงความสะดวกในการทำงาน ท้ายที่สุดโดยการกรองข้อมูลคุณจะกำจัดการทดสอบ IF-IF-IF-TEN และลูปที่เป็นไปได้
6. การสืบค้นร้านค้า
เมื่อแบบสอบถามของคุณค่อนข้างง่ายมันไม่ได้ใช้ความพยายามมากนักในการสร้างคำสั่ง SQL ตั้งแต่เริ่มต้นทุกครั้ง อย่างไรก็ตามการสืบค้นที่ซับซ้อนนั้นแตกต่างกัน ทุกครั้งที่คุณเริ่มต้นจากศูนย์คุณจะสร้างข้อผิดพลาดในการพัฒนามากมาย ดังนั้นเมื่อ SQL ทำงานได้อย่างราบรื่นคุณควรบันทึกและโทรหาพวกเขาหากจำเป็น ด้วยวิธีนี้แม้แต่แบบสอบถามง่าย ๆ ก็สามารถใช้ในการจัดเก็บคำสั่งแบบสอบถามได้ตลอดเวลา
สมมติว่าคุณต้องรายงานต่อทีมงานของคุณสัปดาห์ละครั้งเพื่อระบุปัญหาการสนับสนุนทางธุรกิจในปัจจุบันซึ่งจำเป็นต้องเลือกจากฐานข้อมูลของคุณและควรเลือกบันทึกตามวันที่และจัดเรียงตามหมวดหมู่ของปัญหาการสนับสนุนที่คุณใช้ เมื่อคุณออกแบบแบบสอบถามนี้แล้วทำไมคุณต้องเขียนใหม่สัปดาห์ละครั้งในภายหลัง? อย่าสร้างแบบสอบถามในหน้า HTML ของคุณคุณควรสร้างแบบสอบถามด้วยเครื่องมือฐานข้อมูลของคุณและบันทึกไว้ จากนั้นคุณสามารถใช้คุณสมบัติ ActiveCommand เพื่อแทรกแบบสอบถามลงในหน้า ASP ของคุณ คุณอาจพบว่ามันไร้ความหมายในช่วงแรกหรือสอง แต่อันที่จริงแล้วมันเป็นเพียงไม่กี่บรรทัดของรหัส:
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ตั้งค่า objsq = server.createObject (adodb.command) objsq.activeConnection = databasename OBJSQ.CommandText = StoredQueryName OBJSQ.COMMANDTYPE = ADCMDSTORDPROC ตั้งค่า objrec = objsq.execute |
โปรดทราบว่าการใช้ ADCMDSTOREDPROC หมายความว่าคุณได้รวมไฟล์ ADOVBS.INC ไว้ในหน้า ไฟล์นี้กำหนดค่าคงที่การเข้าถึงที่คุณสามารถเข้าถึงได้ตามชื่อแทนที่จะเป็นหมายเลข เพียงรวมไฟล์ในหน้า) แล้วคุณสามารถใช้ ADCMDSTORDPROC ด้วยวิธีนี้มันจะง่ายกว่าที่จะเข้าใจว่าแบบสอบถามที่เก็บไว้ข้างต้นหมายถึงอะไรเมื่อคุณเห็นมันในอนาคต
7. สั่งซื้อโดย
เลือกสิ่งที่น่าขยะแขยงที่สุดจากฐานข้อมูลการเข้าถึงและพวกเขาจะถูกป้อนลงในฐานข้อมูลตามลำดับที่พวกเขาป้อน แม้ว่าคุณจะใช้การเรียงลำดับโดยในสภาพแวดล้อมการเข้าถึงเพื่อเปลี่ยนมุมมองระเบียนลำดับของระเบียนในตารางข้อมูลก็ไม่เปลี่ยนแปลง
หากคุณใช้ ASP Recordset เพื่อเขียนบันทึกบนหน้าเว็บคุณอาจรู้ว่ามันเจ็บปวดแค่ไหนที่จะได้รับความยุ่งเหยิง แต่คุณอาจต้องเผชิญกับปัญหานี้บ่อยครั้งเพราะไม่มีทางออกที่ง่ายและสะดวก โชคดีที่สั่งซื้อโดยสามารถทำให้ปัญหานี้ง่ายขึ้น
ในการเรียงลำดับผลลัพธ์ของคุณเพียงเพิ่มคำสั่งซื้อโดยส่วนท้ายของคำสั่ง SELECT และระบุคอลัมน์อ้างอิงที่คุณต้องเรียงลำดับ ดังนั้นหากคุณต้องการเรียงลำดับตารางลูกค้าตามนามสกุลของลูกค้าคุณสามารถเขียนคำสั่งค้นหาต่อไปนี้:
sql = เลือก c_lastname, c_firstname, c_email จากการสั่งซื้อลูกค้าโดย c_lastname
ด้วยวิธีนี้ตราบใดที่คุณสร้างชุดระเบียนและเริ่มเขียนผลลัพธ์ไปยังหน้าจอคุณจะเห็นว่าข้อมูลมีการจัดเรียงตามตัวอักษร
ต่อไปนี้คือการดำเนินการบนตาราง:
คัดลอกโครงสร้างของตาราง A ถึงตาราง B เท่านั้น (ไม่มีข้อมูลการคัดลอก)
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: SQL = SELECT * เป็น B จากที่ 1 <> 1 SQL = SELECT * เป็น B จาก A WHERE 1 = 0 |
คัดลอกโครงสร้างและข้อมูลของตาราง A ถึงตาราง B
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: SQL = SELECT * เป็น B จาก a |
แบ่งปัน: การเขียนโปรแกรมขั้นสูง ASP 3.0 (45) การดำเนินการแบบอะซิงโครนัสหมายถึงการดึงข้อมูลในพื้นหลังและข้อมูลที่คุณได้รับสามารถนำมาใช้บนหน้าเว็บก่อนที่ข้อมูลทั้งหมดจะถูกส่งคืน แม้ว่าข้อมูลทั้งหมดอาจจำเป็นต้องใช้งานแบบอะซิงโครนัสสามารถเริ่มการประมวลผลข้อมูลได้อย่างน้อยล่วงหน้า นอกจากนี้ยังสามารถอนุญาตให้ผู้ใช้ดูเนื้อหาบางอย่างก่อนซึ่งทำให้เว็บไซต์