0

C#.net(おそらくmian.master)でdb接続を集中化する方法を知っている人はいますか?

私はデータベース接続用に次のコードを持っており、データを取得するために異なるストアド プロシージャを呼び出すために使用されます。

    string strConnString = ConfigurationManager.ConnectionStrings["testString"].ConnectionString;
    SqlConnection mySqlConnection = new SqlConnection(strConnString);
    SqlCommand mySqlCommand = mySqlConnection.CreateCommand();

    mySqlCommand.CommandText = "EXEC app_campaign_select @CampaignID=" + Request.QueryString["ixCampaign"].ToString();
    mySqlConnection.Open();
    SqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();

すべてのページでそれをコーディングしてdbに複数回接続する代わりに、マスターページで次の接続コードをコーディングし、dbに1回だけ接続してから、dbに接続する必要があるときに各ページでそれを呼び出すことができます

    string strConnString = ConfigurationManager.ConnectionStrings["testString"].ConnectionString;
    SqlConnection mySqlConnection = new SqlConnection(strConnString);
    SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
    SqlDataReader mySqlDataReader;
4

2 に答える 2

1

これを静的 DAL クラスに追加し、必要に応じてパラメーターを追加します。

public static void YourFunction() {
    // your code
}

ノート:

この行に注意してください:mySqlCommand.CommandText = "EXEC app_campaign_select @CampaignID=" + Request.QueryString["ixCampaign"].ToString();

その QueryString がユーザーがどこかに入力した値に由来する場合、SQL インジェクションに対して無防備である可能性があります。

于 2012-10-22T23:45:51.440 に答える
1

もちろん。戻り値の型ごとにいくつかの静的メソッドを持つヘルパー クラスを作成するだけです。ストアド プロシージャ名の文字列を 1 つに渡し、渡す SQL ステートメントの文字列を受け取るオーバーロードされたものを用意します。スカラー値を返すだけのものも使用できます。したがって、どのページからでも呼び出すことができる静的メソッドが 3 つほどあるはずです。

于 2012-10-22T23:48:50.850 に答える