ASP.NET และ SQL SERVER นั้นดีที่สุด สำหรับโปรแกรมขนาดใหญ่ โดยปกติแล้ว SQL SERVER จะเป็นตัวเลือกแรกเท่านั้นที่ประหยัดมาก เมื่อใช้ SQL SERVER เพื่อให้ฐานข้อมูลมีประสิทธิภาพมากขึ้น โดยทั่วไปจะใช้ Stored Procedure เนื่องจาก Stored Procedure ดำเนินการอย่างรวดเร็วและสามารถนำแบบสอบถามขั้นสูงและฟังก์ชันอื่นๆ ไปใช้ ตัวอย่างเช่น พารามิเตอร์ข้อมูลบางตัวถูกส่งผ่านไป แต่ขั้นตอน SQL ที่ดำเนินการอาจแตกต่างกัน
ต่อไปนี้คือตัวอย่างการสร้างบทบาทใหม่และกำหนดให้ไม่สามารถระบุชื่อของบทบาทซ้ำได้ ต่อไปนี้เป็นขั้นตอนที่เก็บไว้
สร้างขั้นตอน sp_AccountRole_Create@CategoryID int,
@RoleName nvarchar (10)
@ คำอธิบาย nvarchar (50)
@RoleID เอาต์พุต int
เช่น
ประกาศ @นับ int-- ค้นหาว่ามีบันทึกที่มีชื่อเดียวกันหรือไม่
SELECT @Count = จำนวน (RoleID) จาก Account_Role WHERE
RoleName = @RoleNameถ้า @นับ = 0
ใส่ลงในบัญชี_บทบาท
(CategoryID, RoleName, Description) ค่า S
(@CategoryID, @RoleName, @คำอธิบาย)SET @RoleID = @@IDENTITY
กลับ 1
ไป
SqlConnection DbConnection = new SqlConnection(mConnectionString);
คำสั่ง SqlCommand = SqlCommand ใหม่ ( "sp_AccountRole_Create", DbConnection );
DbConnection.Open(เชื่อมต่อสตริง);
// ตั้งค่าแอตทริบิวต์ SqlCommand เป็นกระบวนงานที่เก็บไว้
command.CommandType = CommandType.StoredProcedure;command.Parameters.Add("@CategoryID", SqlDbType.Int, 4);
command.Parameters.Add("@RoleName", SqlDbType.NVarChar, 10);
command.Parameters.Add("@Description", SqlDbType.NVarChar, 50);
command.Parameters.Add("@RoleID", SqlDbType.Int, 4);
//ส่งคืนค่า
command.Parameters.Add("ค่าส่งคืน",
SqlDbType.Int,
4, // ขนาด
ParameterDirection.Returnvalue,
เท็จ // เป็นโมฆะ
0, // ความแม่นยำของไบต์
0, // สเกลไบต์
สตริงว่าง
DataRowVersion.ค่าเริ่มต้น
โมฆะ );command.parameters["@CategoryID"].value = allowance.CategoryID;
command.parameters["@RoleName"].value = Permission.PermissionName;
command.parameters["@Description"].value = สิทธิ์คำอธิบาย;
// ค่า ID ใหม่สามารถส่งคืนได้
command.parameters["@RoleID"].Direction = ParameterDirection.Output;int rowsAffected = command.ExecuteNonQuery();
int result = command.parameters["ค่าส่งคืน"].value;
int newID = command.parameters["@RoleID"].value;
ฟังก์ชันนี้ค่อนข้างมีประสิทธิภาพ คุณสามารถรับค่าได้ 3 ค่า ได้แก่ ค่าผลกระทบของแถว ค่าส่งคืนของกระบวนงานที่เก็บไว้ และค่า ID ใหม่