0

最初のもの (コード タイプ 1) は、SqlCommandストアド プロシージャを使用して呼び出し、Insert Click Event Handler の下でその挿入メソッドを呼び出す基本的な挿入です。

最初の1つ

コード タイプ 1:

public string InsertUserInformation()
{

    SqlConnection con = new SqlConnection(ConnectionString);
    con.Open();

    SqlCommand cmd = new SqlCommand("sp_userinformation", con);
    cmd.CommandType = CommandType.StoredProcedure;

    try
    {
        cmd.Parameters.AddWithValue("@UserName", TextBox1.Text);
        cmd.Parameters.AddWithValue("@Password", TextBox2.Text);
        cmd.Parameters.AddWithValue("@FirstName", TextBox3.Text);
        cmd.Parameters.AddWithValue("@LastName", TextBox4.Text);
        cmd.Parameters.AddWithValue("@Email", TextBox5.Text);
        cmd.Parameters.AddWithValue("@PhoneNo", TextBox6.Text);
        cmd.Parameters.AddWithValue("@Location", TextBox7.Text);
        cmd.Parameters.AddWithValue("@Created_By", TextBox8.Text);
        cmd.Parameters.Add("@ERROR", SqlDbType.Char, 500);
        cmd.Parameters["@ERROR"].Direction = ParameterDirection.Output;

        cmd.ExecuteNonQuery();

        string strMessage = (string)cmd.Parameters["@ERROR"].Value;

        con.Close();

        return strMessage;
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        cmd.Dispose();
        con.Close();
        con.Dispose();
    }
}

protected void btnSubmit_Click(object sender, EventArgs e)
{

    InsertUserInformation();
}

2 つ目 (コード タイプ 2) :
http://www.aspdotnet-suresh.com/2010/05/introduction-to-3-tier-architecture-in_17.html

public string InsertUserInformation(BEL objBELUserDetails)
{

    SqlConnection con = new SqlConnection(ConnectionString);
    con.Open();

    SqlCommand cmd = new SqlCommand("sp_userinformation", con);
    cmd.CommandType = CommandType.StoredProcedure;

    try
    {
        cmd.Parameters.AddWithValue("@UserName",objBELUserDetails.UserName);
        cmd.Parameters.AddWithValue("@Password", objBELUserDetails.Password);
        cmd.Parameters.AddWithValue("@FirstName", objBELUserDetails.FirstName);
        cmd.Parameters.AddWithValue("@LastName", objBELUserDetails.LastName);
        cmd.Parameters.AddWithValue("@Email", objBELUserDetails.Email);
        cmd.Parameters.AddWithValue("@PhoneNo", objBELUserDetails.Phoneno);
        cmd.Parameters.AddWithValue("@Location", objBELUserDetails.Location);
        cmd.Parameters.AddWithValue("@Created_By", objBELUserDetails.Created_By);
        cmd.Parameters.Add("@ERROR", SqlDbType.Char, 500);
        cmd.Parameters["@ERROR"].Direction = ParameterDirection.Output;

        cmd.ExecuteNonQuery();

        string strMessage = (string) cmd.Parameters["@ERROR"].Value;

        con.Close();

        return strMessage;
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        cmd.Dispose();
        con.Close();
        con.Dispose();
    }
}

これも挿入ですが、BEL、BLL、DAL を使用し、最後に BLL レイヤーの insert_method が PL のボタン挿入イベント ハンドラーの下で呼び出されます。
私の知る限り、3層はコードをさまざまなレイヤーに整理するのに役立ちます。これにより、メンテナンスが容易になり、他のx要因が存在します。
しかし、最初のもの (コード タイプ 1) は、私にははるかに単純なようです。
それで、私にアドバイスしてください、
1.最初のものはよりシンプルで簡単なのに、なぜ彼らは2番目のものを参照するのでしょうか?
2.パフォーマンスについては、どちらが速いですか?

前もって感謝します。

4

2 に答える 2

1

2 番目のアプローチは、データベースにデータを挿入する前にビジネス検証を行うのに役立ちます。たとえば、Textbox1.text を小文字で保存する必要があり、最小の長さが X であるというビジネス検証を追加したい場合、この場合、ロジックを更新/保存する場所が 2 つある場合、検証を 2 つの場所と任意の場所に記述する必要があります。変更は 2 つの場所に伝播する必要がありますが、ビジネス オブジェクトを使用すると、データベースに入る前にデータ フローを制御できます。何千ものオブジェクトを挿入して作成するまで、パフォーマンスに関連するものはほとんどありません。ただし、プロジェクトが小規模で、POC アプローチ 1 が適切なオプションである場合

于 2013-09-03T05:32:35.567 に答える