2014-10-10 61 views
1

我學習業務邏輯和數據邏輯以及程序的可讀性。使用存儲過程的文本框值到數據庫

我有一個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 
} 

我如何連接三個全部?我知道文本框的值需要分配給存儲過程參數,但是怎麼做?

在此先感謝,抱歉,如果這太長,試圖盡我所能解釋它。

+0

在你DL層,你會想不同的方法插入和檢索數據。插入方法可能返回的唯一情況是插入的記錄數量和/或遇到的任何錯誤。一旦你做出分離,層之間的連接將變得簡單。 – JRLambert 2014-10-10 19:34:41

+0

我會在這裏留下這個。 http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/ – 2014-10-10 19:35:18

+0

@JRLambert我的確有分離插入方法和檢索數據 – Noonmoon 2014-10-10 19:41:12

回答

0

爲了實際上可以INSERT數據,你應該使用在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()); 
    } 
} 
+0

我不知道我的業務邏輯現在看起來如何,因爲正在使用sqlcommand – Noonmoon 2014-10-10 19:44:11

+0

@Noonmoon:不知道你的意思 - 這***也是使用'SqlCommand'! – 2014-10-10 20:24:59

+0

我更新了我的數據邏輯,就像你說的,現在我想弄清楚如何從表單類中將Textbox值發送到數據庫中...... – Noonmoon 2014-10-10 20:45:59

相關問題