หนึ่ง. คำนำ:
Stored Procedure คือชุดของคำสั่ง SQL ที่ออกแบบมาเพื่อทำหน้าที่เฉพาะให้สมบูรณ์ ซึ่งจะถูกคอมไพล์และจัดเก็บไว้ในฐานข้อมูล ผู้ใช้ดำเนินการขั้นตอนการจัดเก็บโดยการระบุชื่อและการกำหนดพารามิเตอร์ (หากขั้นตอนการจัดเก็บมีพารามิเตอร์) ขั้นตอนที่เก็บไว้เป็นวัตถุที่สำคัญในฐานข้อมูล และแอปพลิเคชันฐานข้อมูลที่ได้รับการออกแบบอย่างดีควรใช้ขั้นตอนที่เก็บไว้ โดยทั่วไป Stored Procedure มีข้อดีดังต่อไปนี้:
◆ Stored Procedure ช่วยให้สามารถเขียนโปรแกรมส่วนประกอบมาตรฐานได้
◆ Stored Procedures สามารถบรรลุความเร็วการดำเนินการที่เร็วขึ้น
◆ Stored Procedures สามารถลดการรับส่งข้อมูลเครือข่าย
◆ Stored Procedures สามารถใช้เป็นกลไกการรักษาความปลอดภัยได้อย่างเต็มที่
ผู้เขียนบทความนี้จะแนะนำ ให้กับคุณถึงการประยุกต์ใช้ขั้นตอนการจัดเก็บในแอปพลิเคชันฐานข้อมูล .NET และวิธีการใช้ร่วมกับวัตถุ SqlDataAdapter วัตถุ DataSet ฯลฯ ใน ADO.NET เพื่อปรับปรุงประสิทธิภาพโดยรวมของแอปพลิเคชันฐานข้อมูล .NET
สอง. ความต้องการของระบบ:
เครื่องมือสำหรับการพัฒนา: ระบบการจัดการฐานข้อมูล Visual Studio.NET
: SQL Server 2000 (รวมถึงฐานข้อมูล Pubs ที่ใช้ในโปรแกรมตัวอย่าง
) สร้างขั้นตอนการจัดเก็บอย่างง่าย:
ที่นี่ฉันจะแนะนำวิธีการใช้ Visual Studio.NET IDE เพื่อสร้างขั้นตอนการจัดเก็บ เป็นเรื่องง่ายมากและใช้งานง่ายในการสร้างขั้นตอนการจัดเก็บโดยใช้ Visual Studio.NET IDE ตราบใดที่คุณนำทางไปยังฐานข้อมูล Pubs ในเซิร์ฟเวอร์ explorer และขยายโหนด คุณจะพบวัตถุฐานข้อมูลต่างๆ รวมถึงขั้นตอนการจัดเก็บ ดังแสดงในรูปที่ 1 แสดง.
คลิกขวาที่โหนดกระบวนงานที่เก็บไว้เพื่อเปิดเมนูที่มีคำสั่ง "กระบวนงานที่เก็บไว้ใหม่" หลังจากสร้างขั้นตอนการจัดเก็บใหม่ เทมเพลตโค้ดที่แสดงด้านล่างจะปรากฏในหน้าต่างแก้ไขโค้ดใน IDE:
สร้างขั้นตอน dbo.StoredProcedure1
-
-
@ ประเภทข้อมูลพารามิเตอร์1 = ค่าเริ่มต้น
@parameter2 ประเภทข้อมูล OUTPUT )
-
เช่น
/* ตั้งหมายเลขเป็น */
กลับ
เทมเพลตโค้ดด้านบนเป็นไปตามกฎไวยากรณ์แบบง่ายสำหรับการสร้างขั้นตอนการจัดเก็บ กฎไวยากรณ์ที่สมบูรณ์มีดังนี้:
CREATE PROC [ EDURE ] Procedure_name [ ;
[ { @พารามิเตอร์ data_type }
[ แปรผัน ] [ = ค่าเริ่มต้น ] [ เอาต์พุต ]
] [ ,...น ]
[ กับ
{ คอมไพล์ใหม่ |. การเข้ารหัส |. คอมไพล์ใหม่ , การเข้ารหัส } ]
[ สำหรับการจำลอง ]
AS sql_statement [ ...n ]
เนื่องจากข้อจำกัดด้านพื้นที่ จึงไม่แนะนำความหมายของแต่ละพารามิเตอร์ที่นี่ ผู้อ่านที่สนใจสามารถดูข้อมูลเกี่ยวกับระบบการจัดการฐานข้อมูล SQL Server 2000
ด้านล่างนี้ ผมจะแนะนำองค์ประกอบทางไวยากรณ์แต่ละส่วนในเทมเพลตโค้ดนี้โดยย่อ คำสั่ง CREATE PROCEDURE จะสร้าง Stored Procedure ตามด้วยชื่อของ Stored Procedure ส่วนประกอบใน "/*...*/" คือพารามิเตอร์ของขั้นตอนการจัดเก็บ ซึ่งอาจรวมถึงพารามิเตอร์อินพุตและพารามิเตอร์เอาต์พุต เนื้อหาที่ตามหลังคีย์เวิร์ด AS คือเนื้อหาหลักของ Stored Procedure ซึ่งเป็นตัวเลขและประเภทของคำสั่ง SQL ที่มีอยู่ใน Stored Procedure คำสำคัญ RETURN ระบุจุดสิ้นสุดของกระบวนงานที่เก็บไว้และสามารถส่งคืนค่าสถานะจำนวนเต็มให้กับผู้เรียกได้ มาสร้างขั้นตอนการจัดเก็บแบบง่ายๆ โดยไม่มีพารามิเตอร์แล้วใช้:
CREATE PROCEDURE dbo.up_GetPublisherInfo
เช่น
เลือก pub_id, pub_name เมือง รัฐ ประเทศ
จากผู้จัดพิมพ์
กลับ
หลังจากสร้างขั้นตอนการจัดเก็บข้างต้นแล้ว ให้บันทึก เมื่อบันทึกแล้ว โหนดที่สอดคล้องกับขั้นตอนการจัดเก็บจะปรากฏใน Server Explorer โปรดทราบว่าคีย์เวิร์ด CREATE ในหน้าต่างแก้ไขโค้ดได้เปลี่ยนเป็นคีย์เวิร์ด ALTER ซึ่งใช้เพื่อเปลี่ยนขั้นตอนการจัดเก็บที่มีอยู่ หากต้องการรันขั้นตอนที่เก็บไว้ข้างต้น เพียงคลิกที่โหนดและเลือก "เรียกใช้ขั้นตอนที่เก็บไว้" ในเมนูป๊อปอัปคลิกขวา ผลลัพธ์ของการดำเนินการจะเป็นดังนี้:
สี่. สร้างขั้นตอนการจัดเก็บด้วยพารามิเตอร์:
ด้านบนนี้เราได้สร้างขั้นตอนการจัดเก็บอย่างง่ายโดยไม่มีพารามิเตอร์ แต่ในการใช้งานจริง กระบวนการจัดเก็บจำนวนมากที่มีพารามิเตอร์มักจะถูกนำมาใช้ โดยทั่วไปขั้นตอนการจัดเก็บพร้อมพารามิเตอร์จะใช้เพื่ออัปเดตข้อมูลหรือแทรกข้อมูล ด้านล่างเราสามารถใช้วิธีการดำเนินการเดียวกันเพื่อสร้างขั้นตอนการจัดเก็บด้วยพารามิเตอร์:
สร้างขั้นตอน dbo.up_UpdatePublisherInfo
-
@pub_id ถ่าน (4)
@pub_name วาร์ชาร์ (40),
@cityvarchar(20),
@สถานะถ่าน (2)
@country วาร์ชาร์ (30)
-
เช่น
อัพเดทสำนักพิมพ์
SET pub_name = @pub_name, เมือง = @เมือง, รัฐ = @รัฐ,
ประเทศ = @ประเทศ
โดยที่ (pub_id = @pub_id)
กลับ
ในโค้ดด้านบนเพื่อสร้างขั้นตอนการจัดเก็บ เราจะประกาศตัวแปรท้องถิ่น-พารามิเตอร์ของขั้นตอนการจัดเก็บโดยการเพิ่มเครื่องหมาย "@" ก่อนชื่อ เรายังประกาศประเภทของพารามิเตอร์แต่ละตัวและกำหนดค่าทิศทางของแต่ละพารามิเตอร์ด้วย คือ ระบุว่าพารามิเตอร์เป็นประเภทอินพุตหรือประเภทเอาต์พุต หรือประเภทอินพุต-เอาท์พุต หรือประเภทค่าส่งคืน ผู้ใช้สามารถเรียก Stored Procedure ผ่านชื่อ Stored Procedure ที่เกี่ยวข้องและพารามิเตอร์ที่ถูกต้องและถูกต้อง นอกจากนี้ คุณสามารถเพิ่มพารามิเตอร์เอาต์พุตให้กับพารามิเตอร์ได้โดยใช้คีย์เวิร์ด OUTPUT โปรดดูกฎไวยากรณ์ด้านบนสำหรับวิธีการเฉพาะ พารามิเตอร์เอาต์พุตสามารถส่งคืนข้อมูลที่เกี่ยวข้องไปยังผู้เรียกได้
ขั้นตอนที่เก็บไว้ข้างต้นสามารถอัปเดตข้อมูลผู้เผยแพร่ที่เกี่ยวข้องในตารางผู้เผยแพร่ คุณสามารถดำเนินการได้โดยการคลิกที่โหนดของกระบวนงานที่เก็บไว้ และเลือก "เรียกใช้กระบวนงานที่เก็บไว้" ในเมนูป๊อปอัปคลิกขวา เมื่อดำเนินการแล้ว กล่องโต้ตอบสำหรับป้อนข้อมูลผู้เผยแพร่จะปรากฏขึ้นใน IDE (ดังแสดงในรูปที่ 3) กรอกข้อมูลการอัปเดตที่ถูกต้องและถูกต้องในกล่องโต้ตอบนี้ โปรดทราบว่าต้องมีค่า pub_id ในตารางต้นฉบับ จากนั้นคลิกปุ่ม "ตกลง" เพื่ออัปเดตข้อมูล
ห้า. สร้างแอปพลิเคชันฐานข้อมูลด้วยขั้นตอนการจัดเก็บแบบง่าย:
ต่อไป เราจะใช้ขั้นตอนการจัดเก็บข้างต้นโดยไม่มีพารามิเตอร์เพื่อสร้างแอปพลิเคชันฐานข้อมูล ซึ่งยังใช้วัตถุ SqlDataAdapter และวัตถุ DataSet ใน ADO.NET วัตถุ SqlDataAdapter ทำหน้าที่เป็นสะพานเชื่อมระหว่างฐานข้อมูล SQL Server และวัตถุ DataSet เพื่อเชื่อมต่อทั้งสอง วัตถุ SqlDataAdapter มีสองวิธีที่ใช้กันทั่วไป: วิธี Fill() และวิธี Update() เมธอด Fill() สามารถรับข้อมูลที่เกี่ยวข้องจากฐานข้อมูลและกรอกลงในออบเจ็กต์ DataSet และวิธีการ Update() ดังที่ชื่อแนะนำ จะอัปเดตชุดข้อมูล ก่อนที่จะเรียกใช้เมธอด Fill() เราต้องตั้งค่าคุณสมบัติ SelectCommand ของวัตถุ SqlDataAdapter ซึ่งจริงๆ แล้วคือวัตถุ SqlCommand คุณสมบัติ SelectCommand มีคำสั่ง SQL ที่ถูกต้อง และสามารถรับข้อมูลที่เกี่ยวข้องจากฐานข้อมูลและกรอกลงในวัตถุ DataSet
ขั้นแรก เราสร้างแอปพลิเคชัน Windows Forms ภาษาการเขียนโปรแกรมคือ C# หลังจากสร้างโปรเจ็กต์ใหม่ใน Visual Studio.NET แล้ว ให้เพิ่มคลาสใหม่ให้กับโปรเจ็กต์ - คลาส Publishers ซึ่งจะห่อหุ้มตรรกะทางธุรกิจของการเชื่อมต่อกับฐานข้อมูลแบ็กเอนด์และรับออบเจ็กต์ชุดข้อมูล ขั้นตอนมีดังนี้:
1. เพิ่มการอ้างอิงเนมสเปซที่จำเป็น: การใช้ System.Data.SqlClient
; เพิ่มตัวแปรที่จำเป็นต่อไปนี้ให้กับคลาสนี้:
SqlConnection cnPubs ส่วนตัว;
SqlCommand cmdPubs ส่วนตัว;
SqlDataAdapter daPubs ส่วนตัว;
ชุดข้อมูลส่วนตัว dsPubs;
3. ในตัวสร้างของคลาสนี้ ให้ทำการเชื่อมต่อกับฐานข้อมูลแบ็กเอนด์และรับวัตถุ SqlDataAdapter และตรรกะทางธุรกิจอื่น ๆ:
public Publishers()
-
พยายาม
-
//สร้างวัตถุเชื่อมต่อฐานข้อมูล
cnPubs = SqlConnection ใหม่ ( "เซิร์ฟเวอร์=localhost;ความปลอดภัยแบบรวม=true;ฐานข้อมูล=pubs" );
//สร้างวัตถุ SqlCommand และระบุประเภทคำสั่งเป็นกระบวนงานที่เก็บไว้
cmdPubs = SqlCommand ใหม่();
cmdPubs.Connection = cnPubs;
cmdPubs.CommandType = CommandType.StoredProcedure;
cmdPubs.CommandText = "up_GetPublisherInfo";
//สร้างวัตถุ SqlDataAdapter และตั้งค่าคุณสมบัติ SelectCommand เป็นวัตถุ SqlCommand ข้างต้น
daPubs = SqlDataAdapter ใหม่();
daPubs.SelectCommand = cmdPubs;
//สร้างวัตถุชุดข้อมูล
dsPubs = ชุดข้อมูลใหม่ ();
-
จับ (ข้อยกเว้น) {}
-
4. สุดท้ายนี้ มีการจัดเตรียมเมธอด GetPublisherInfo() สำหรับคลาสนี้ ซึ่งเติมวัตถุ DataSet ด้วยวัตถุ SqlDataAdapter และส่งกลับวัตถุ DataSet ที่เติมเต็ม วิธีการมีดังนี้ (เป็นที่น่าสังเกตว่าวัตถุ SqlDataAdapter จะเปิดการเชื่อมต่อฐานข้อมูลโดยปริยายและ เปิดการเชื่อมต่อฐานข้อมูลโดยปริยายหลังจากได้รับข้อมูล ปิดการเชื่อมต่ออย่างเป็นทางการ ซึ่งหมายความว่าวัตถุชุดข้อมูลทำงานในโหมดที่ไม่ใช่การเชื่อมต่อ และเมื่อคุณเปิดการเชื่อมต่อฐานข้อมูลอย่างชัดเจนและรับข้อมูล วัตถุ SqlDataAdapter จะไม่ปิดการเชื่อมต่อ):
ชุดข้อมูลสาธารณะ GetPublisherInfo()
-
// เรียกเมธอด Fill() ของวัตถุ SqlDataAdapter และส่งคืนวัตถุชุดข้อมูล
daPubs.Fill(dsPubs);
กลับ dsPubs;
-
หลังจากเสร็จสิ้นการออกแบบคลาส Publishers แล้ว เราจะเพิ่มตัวควบคุม DataGrid ให้กับฟอร์มหลัก และใช้เพื่อแสดงข้อมูลในวัตถุ DataSet ขั้นแรกให้เพิ่มตัวแปรสมาชิกต่อไปนี้ในคลาสฟอร์มหลัก:
ผับผู้เผยแพร่ส่วนตัว
ชุดข้อมูลส่วนตัว ds;
หลังจากนั้น ให้แก้ไข Constructor ของคลาสฟอร์มหลักดังนี้:
สาธารณะ Form1()
-
-
// จำเป็นสำหรับการสนับสนุน Windows Forms Designer
-
เตรียมใช้งานส่วนประกอบ();
-
// สิ่งที่ต้องทำ: เพิ่มโค้ด Constructor หลังจากการเรียก InitializeComponent
// pubs = ผู้จัดพิมพ์ใหม่ ();
ds = pubs.GetPublisherInfo();
dataGrid1.DataSource = ds.Tables[0];
-
ด้วยวิธีนี้ ทันทีที่แอปพลิเคชันเริ่มต้น ข้อมูลที่เกี่ยวข้องที่ได้รับจากฐานข้อมูล Pubs โดยใช้ขั้นตอนการจัดเก็บข้างต้นโดยไม่มีพารามิเตอร์จะแสดงในตัวควบคุม DataGrid ของแบบฟอร์มหลัก แผนภาพการทำงานของโปรแกรมจะเป็นดังนี้
: สร้างแอปพลิเคชันฐานข้อมูลด้วย Stored Procedure พร้อมพารามิเตอร์:
ด้านบนนี้เราสร้างแอปพลิเคชันด้วย Stored Procedure โดยไม่มีพารามิเตอร์ และตอนนี้เราจะสร้างแอปพลิเคชันฐานข้อมูลที่ซับซ้อนมากขึ้น ในแอปพลิเคชันฐานข้อมูลจริง เรามักจะจำเป็นต้องได้รับข้อมูลและอัปเดต แทรกหรือลบข้อมูล ในเวลานี้ เราจำเป็นต้องใช้ขั้นตอนที่เก็บไว้พร้อมพารามิเตอร์ ในเวลาเดียวกัน เมื่อใช้วัตถุ SqlDataAdapter เราจะเรียกมันว่า Update() วิธี. เมธอด Update() จะทำให้การดำเนินการที่เกี่ยวข้องเสร็จสมบูรณ์โดยอัตโนมัติตามการเปลี่ยนแปลงในแต่ละระเบียนในวัตถุ DataTable ในวัตถุ DataSet วัตถุ SqlDataAdapter ยังประกอบด้วยคุณสมบัติต่างๆ เช่น UpdateCommand, InsertCommand, DeleteCommand เป็นต้น คุณสมบัติเหล่านี้เป็นวัตถุ SqlCommand จริงๆ วิธีการ Update() จะเลือกคุณลักษณะที่เหมาะสมตามประเภทของการดำเนินการ
เมื่อใช้ขั้นตอนการจัดเก็บพร้อมพารามิเตอร์เพื่อสร้างแอปพลิเคชันฐานข้อมูล โดยทั่วไปเราจะใช้คลาส SqlParameter ซึ่งสรุปคุณสมบัติและวิธีการต่างๆ ที่เกี่ยวข้องกับพารามิเตอร์ Sql คุณสมบัติประกอบด้วย parameterName, SqlDBType, Direction, Size, Value, SourceColumn และ SourceVersion เป็นต้น ในบรรดาพารามิเตอร์เหล่านี้ ชื่อพารามิเตอร์, SqlDBType, ทิศทาง, ขนาด และคุณลักษณะอื่นๆ จะถูกใช้เพื่อจับคู่พารามิเตอร์ที่กำหนดไว้ในขั้นตอนการจัดเก็บ ตัวอย่างเช่น อ็อบเจ็กต์ SqlParameter ที่กำหนดไว้ด้านล่างใช้เพื่อจับคู่พารามิเตอร์ "@pub_id " ในขั้นตอนการจัดเก็บ up_UpdatePublisherInfo ที่กำหนดไว้ก่อนหน้านี้
SqlParameter updParam = new SqlParameter( "@pub_id", SqlDbType.Char, 4 );
ในคำจำกัดความข้างต้น แม้ว่าจะไม่ได้ระบุแอตทริบิวต์ Direction ไว้อย่างชัดเจน แต่ค่าเริ่มต้นคือ Input ดังนั้นจึงตรงตามความต้องการของเรา และถ้าคุณสมบัติ Direction ของวัตถุ SqlParameter เป็น InputOutput หรือ Output หรือ ReturnValue จะต้องระบุคุณสมบัติ Direction ไว้อย่างชัดเจน ตัวอย่างเช่น รหัสต่อไปนี้ประกาศอย่างชัดเจนว่าคุณสมบัติ Direction ของวัตถุ SqlParameter เป็น Output
oParam.Direction = parameterDirection.Output;
คุณสมบัติ SourceColumn ถูกใช้เพื่อจับคู่วัตถุ DataColumn ในวัตถุ DataTable การจับคู่นี้สามารถนำเข้าวัตถุ SqlParameter โดยปริยายเมื่อมีการเรียกวิธีการ Update() เพื่ออัปเดตวัตถุ DataTable หากคุณสมบัตินี้ไม่ได้รับการประกาศเมื่อกำหนด คุณต้องระบุคุณสมบัติ SourceColumn ของออบเจ็กต์ SqlParameter อย่างชัดเจนในโค้ดของคุณ
ค่าเริ่มต้นของคุณสมบัติ SourceVersion คือค่าปัจจุบันในฟิลด์ที่สอดคล้องกันของออบเจ็กต์ DataRow ซึ่งเป็นค่าที่จะอัปเดตไปยังฐานข้อมูล แน่นอนว่าคุณสมบัติ SourceVersion ยังสามารถชี้ไปที่ค่าดั้งเดิมในฟิลด์ที่สอดคล้องกันของออบเจ็กต์ DataRow นั่นคือค่าเริ่มต้นที่ได้รับจากฐานข้อมูล ในระบบประมวลผลธุรกรรมฐานข้อมูลปัญหาการซิงโครไนซ์ข้อมูลมีความสำคัญมาก มาสร้างขั้นตอนการจัดเก็บที่สามารถตรวจจับการซิงโครไนซ์ข้อมูลได้
สร้างขั้นตอน dbo.up_UpdatePublisherName
-
@pub_id ถ่าน (4)
@pub_name วาร์ชาร์(40)
@Original_pub_name วาร์ชาร์(40)
-
เช่น
ถ้ามี (เลือก pub_id
จากผู้จัดพิมพ์
โดยที่ (pub_id = @pub_id) และ (pub_name = @Original_pub_name))
เริ่ม
อัปเดตผู้จัดพิมพ์ SET pub_name = @pub_name
ที่ไหน (pub_id = @pub_id)
จบ
กลับ
ต่อไปเราจะเรียกขั้นตอนการจัดเก็บในแอปพลิเคชันด้านบนเพื่ออัปเดตชื่อผู้จัดพิมพ์ ขั้นแรก ปรับปรุงคลาสตรรกะทางธุรกิจ - คลาสผู้เผยแพร่ตามแอปพลิเคชันดั้งเดิม:
1. เพิ่มวัตถุ SqlCommand ใหม่ที่สามารถใช้เป็นคุณสมบัติ UpdateCommand ของวัตถุ SqlDataAdapter:
SqlCommand ส่วนตัว cmdUpdPubs;
2. อัปเดตฟังก์ชัน Constructor Publishers() ของคลาสนี้เพื่อเพิ่มสิ่งต่อไปนี้:
// สร้างวัตถุ SqlCommand อื่นที่อ้างอิงขั้นตอนการจัดเก็บที่อัปเดตชื่อผู้เผยแพร่
cmdUpdPubs = SqlCommand ใหม่();
cmdUpdPubs.Connection = cnPubs;
cmdUpdPubs.CommandType = CommandType.StoredProcedure;
cmdUpdPubs.CommandText = "up_UpdatePublisherName";
//เพิ่มพารามิเตอร์ที่จำเป็นให้กับวัตถุ SqlCommand ข้างต้น
cmdUpdPubs.Parameters.Add( "@pub_id", SqlDbType.Char, 4, "pub_id" );
cmdUpdPubs.Parameters.Add( "@pub_name", SqlDbType.VarChar, 40, "pub_name" );
SqlParameter updParam = SqlParameter ใหม่
( "@Original_pub_name", SqlDbType.VarChar, 40, "pub_name" );
updParam.SourceVersion = DataRowVersion.Original;
cmdUpdPubs.Parameters.Add( updParam );
3. ระบุคุณสมบัติ UpdateCommand ของวัตถุ SqlDataAdapter เป็นวัตถุ SqlCommand ที่กำหนดไว้ข้างต้น:
daPubs.UpdateCommand = cmdUpdPubs;
4. เพิ่มวิธีการ UpdatePublisherName():
โมฆะสาธารณะ UpdatePublisherName (ชุดข้อมูล dsChanges)
-
// อัปเดตการเปลี่ยนแปลงทั้งหมด
daPubs.Update(dsChanges);
-
หลังจากที่คลาสตรรกะทางธุรกิจของแอปพลิเคชันเสร็จสมบูรณ์ ให้เพิ่มปุ่มชื่อ "อัปเดตชุดข้อมูล" บนแบบฟอร์มหลัก และเพิ่มฟังก์ชันตอบสนองเหตุการณ์ของปุ่มดังต่อไปนี้:
ถือเป็นโมฆะส่วนตัว button1_Click(ผู้ส่งวัตถุ System.EventArgs e) { if ( ds.HasChanges() ) { pubs.UpdatePublisherName( ds.GetChanges() ); ds.Clear(); ds = pubs.GetPublisherInfo() }
จนถึงตอนนี้ คลาสตรรกะทางธุรกิจของแอปพลิเคชันและคลาสฟอร์มหลักได้รับการอัปเดตแล้ว ขณะนี้แอปพลิเคชันสามารถอัปเดตเนื้อหาที่เกี่ยวข้องในฐานข้อมูลตามการเปลี่ยนแปลงของผู้ใช้
เจ็ด สรุป:
บทความนี้จะแนะนำให้คุณรู้จักกับความรู้พื้นฐานของกระบวนงานที่เก็บไว้และวิธีการรวมวัตถุ SqlDataAdapter วัตถุ DataSet ฯลฯ เพื่อสร้างแอปพลิเคชันที่ขับเคลื่อนด้วยข้อมูลในแอปพลิเคชันฐานข้อมูล .NET ในบทความนี้ เราได้ใช้ขั้นตอนการจัดเก็บสองประเภท: ประเภทแรกเป็นขั้นตอนการจัดเก็บแบบธรรมดาที่ไม่มีพารามิเตอร์ ซึ่งค่อนข้างใช้งานง่าย ส่วนอีกประเภทคือขั้นตอนการจัดเก็บที่มีพารามิเตอร์ และคุณต้องเรียกขั้นตอนการจัดเก็บประเภทนี้ ไปยังวัตถุ SqlParameter ในเวลาเดียวกัน ก็ไม่ใช่เรื่องยากที่จะพบว่าการห่อหุ้มตรรกะทางธุรกิจการอัปเดตข้อมูลในขั้นตอนการจัดเก็บเป็นวิธีการออกแบบที่ดี ซึ่งสามารถปรับปรุงความสามารถในการจัดการ ความสามารถในการปรับขนาด และความปลอดภัยของฐานข้อมูลของแอปพลิเคชัน ในทำนองเดียวกัน ตรรกะทางธุรกิจสำหรับการแทรกและการลบข้อมูลสามารถถูกห่อหุ้มไว้ในขั้นตอนการจัดเก็บและใช้ในแอปพลิเคชันในลักษณะเดียวกัน สุดท้ายนี้ ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับทุกคนได้มาก