C# 使用存储过程将文本框值发送到数据库
我正在学习业务逻辑、数据逻辑和程序可读性 我有一个包含所有存储过程的DL(数据逻辑)类,然后我有一个连接DL和BL的BL(业务逻辑)。 然后我有一个表单类,可以在其中向数据库添加新用户。 如何连接表单、BL和DL? DL类存储过程:C# 使用存储过程将文本框值发送到数据库,c#,sql,sql-server,stored-procedures,C#,Sql,Sql Server,Stored Procedures,我正在学习业务逻辑、数据逻辑和程序可读性 我有一个包含所有存储过程的DL(数据逻辑)类,然后我有一个连接DL和BL的BL(业务逻辑)。 然后我有一个表单类,可以在其中向数据库添加新用户。 如何连接表单、BL和DL? DL类存储过程: public DataSet InsertClubRoles(int RoleID, string Roledesc, string Createdby) { DataSet mydataset = new DataSet()
public DataSet InsertClubRoles(int RoleID, string Roledesc, string Createdby)
{
DataSet mydataset = new DataSet();
SqlCommand cmdclubroles = new SqlCommand();
//get stored procedure
cmdclubroles.CommandText = "usp_insertrlubroles";
cmdclubroles.CommandType = CommandType.StoredProcedure;
//connect
cmdclubroles.Connection = jadcoreConnection.GetConnection();
//parameters
cmdclubroles.Parameters.AddWithValue("@RoleID", Convert.ToInt32(RoleID));
cmdclubroles.Parameters.AddWithValue("@Roledesc", Roledesc);
cmdclubroles.Parameters.AddWithValue("@Createdby", Createdby);
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(cmdclubroles);
mySqlDataAdapter.Update(mydataset);
return mydataset;
}
以下是业务逻辑:
public DataSet insertingclubroles(int RoleID, string Roledesc, string Createdby)
{
DataSet ids = new DataSet();
ids = new GetClubRoles().InsertClubRoles(RoleID, Roledesc, Createdby);
return ids;
}
最后,这里是提交按钮和另一种形式的保存角色方法:
private void Savebtn_Click(object sender, EventArgs e)
{
try
{
saverole();
MessageBox.Show("Club role saved successfuly");
}
catch (Exception er)
{
MessageBox.Show(er.Message.ToString());
}
}
public void saverole()
{
ClubRoles cr = new ClubRoles();
cr.insertingclubroles(2,"as","me");
//need text for description
//need select which client is selected
}
我如何连接这三个?我知道文本框值需要分配给存储过程参数,但是如何分配呢
提前感谢,如果这太长了,很抱歉,请尽我所能解释清楚。要准确地插入数据,您应该使用
SqlCommand
上的.ExecuteNonQuery
方法-类似以下内容:
public void InsertClubRoles(int RoleID, string Roledesc, string Createdby)
{
using (SqlCommand cmdclubroles = new SqlCommand())
{
// get stored procedure
cmdclubroles.CommandText = "usp_insertrlubroles";
cmdclubroles.CommandType = CommandType.StoredProcedure;
// connection
cmdclubroles.Connection = jadcoreConnection.GetConnection();
// parameters
cmdclubroles.Parameters.AddWithValue("@RoleID", Convert.ToInt32(RoleID));
cmdclubroles.Parameters.AddWithValue("@Roledesc", Roledesc);
cmdclubroles.Parameters.AddWithValue("@Createdby", Createdby);
// execute the INSERT statement
cmdclubroles.Connection.Open();
cmdclubroles.ExecuteNonQuery();
cmdclubroles.Connection.Close();
}
}
更新:要将文本框中的值传递到SaveRole
方法中,请向其中添加一些参数
public void SaveRole(int RoleID, string RoleDesc, string CreatedBy)
{
ClubRoles cr = new ClubRoles();
cr.insertingclubroles(RoleID, RoleDesc, CreatedBy);
//need text for description
//need select which client is selected
}
然后从窗体的保存方法中设置这些参数:
private void Savebtn_Click(object sender, EventArgs e)
{
try
{
SaveRole(Convert.ToInt32(tbxRoleID.Text), tbxRoleDesc.Text, tbxCreatedBy.Text);
MessageBox.Show("Club role saved successfully");
}
catch (Exception er)
{
MessageBox.Show(er.Message.ToString());
}
}
在DL层中,需要使用单独的方法来插入和检索数据。插入方法可能返回的唯一内容是插入的记录数量和/或任何错误。一旦你做了分离,层之间的连接就会很简单。我就把这个留在这里@JRLambert I确实已经分离了插入方法和检索方法data@Noonmoon您可能有一部分,但您有一个insert方法返回
数据集
@JRLambert I删除了数据集,如marc_所示,现在我正试图弄清楚如何将Textbox值从form类发送到数据库中。我不确定我的业务逻辑现在会是什么样子,因为我们正在使用sqlcommand@Noonmoon:不确定您的意思-这也在使用SqlCommand
!我像你说的那样更新了我的数据逻辑,现在我正试图弄清楚如何将文本框值从表单类发送到数据库中。。。