[英]How do I execute a Stored Procedure in C#?
使用以下SQL存储过程,如何在btnYes
按钮的事件处理程序中执行它? 我不知道如何执行存储过程。 我设置了一个TextBox
来输入RoomNo
。 当我点击btnYes
,预期的结果应是Occupied
布尔值被设置为true
在tblRooms
基于它的表RoomNo
。
CREATE PROCEDURE sproc_tblRooms_Update
-- Parameters for the UPDATE statement
@RoomNo INT,
@Occupied BIT
AS
UPDATE tblRooms
SET Occupied = @Occupied
WHERE RoomNo = @RoomNo
在类中设置的Update()
方法:
public void Update(clsRoom RoomOccupancy)
{
// This function will update an existing reservation in the database
// Connect to the database
clsDataConnection DBRoomVacancy = new clsDataConnection();
// Add the parameters
DBRoomVacancy.AddParameter("@RoomNo", RoomOccupancy.RoomNo);
DBRoomVacancy.AddParameter("@Occupied", RoomOccupancy.Occupied);
// Execute the query
DBRoomVacancy.Execute("sproc_tblRooms_Update");
}
我想要单击以执行存储过程的btnYes
按钮的事件处理程序:
protected void btnYes_Click(object sender, EventArgs e)
{
}
您应该能够调用Update()
创建类的实例,该方法后Update()
方法中的一员。 由于您没有提供完整的类定义,因此在下面的示例中将其命名为MyClass
:
protected void btnYes_Click(object sender, EventArgs e)
{
var myClass = new MyClass();
myClass.Update(new clsRoom
{
RoomNo = 1234,
Occupied = true
});
}
话虽这么说,作为clsDataConnection
笔记,您的clsDataConnection
类需要大量工作。 我没看很久,但是让我IDisposable
是,没有实现IDisposable
的类(例如SqlConnection
, SqlCommand
等)都没有包装在using
块中或调用Dispose()
。
我还注意到该类对所有查询使用SqlConnection
的共享实例。 最佳做法是为每个查询创建一个SqlConnection
实例 。
我还将反转一些if
语句,并使用return
摆脱一些不必要的else
块。 这样做的原因是为了减少不必要的嵌套,并避免使用Doom / Arrow代码的金字塔 。
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class news : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnYes_Click(object sender, EventArgs e)
{
try
{
string str = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
SqlConnection con = new SqlConnection(str );
SqlCommand cmd = new SqlCommand("sproc_tblRooms_Update", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@RoomNo", SqlDbType.VarChar).Value = txttitle.Text);
cmd.Parameters.Add("@Occupied ", SqlDbType.VarChar).Value = Occupied.SelectedValue.ToString();
con.Open();
cmd.ExecuteNonQuery();
con.Close();
lblmsg.Text = "Room has been Updated Successfully";
}
catch (Exception)
{ }
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.