C# 使用存储过程将文本框值发送到数据库

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()

我正在学习业务逻辑、数据逻辑和程序可读性

我有一个包含所有存储过程的DL(数据逻辑)类,然后我有一个连接DL和BL的BL(业务逻辑)。 然后我有一个表单类,可以在其中向数据库添加新用户。 如何连接表单、BL和DL? DL类存储过程:

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
!我像你说的那样更新了我的数据逻辑,现在我正试图弄清楚如何将文本框值从表单类发送到数据库中。。。