0

私のasp.netアプリケーションでは、各ページPage_Load関数に接続文字列を追加し、ページの上部でその文字列をパブリックとして宣言しました。

私はこれが間違っていることを知っています。アプリケーション全体が同じ接続を実行しているので、接続文字列を1か所だけで宣言したいと思います。接続文字列はどこで宣言すればよいですか?各接続の接続文字列にアクセスするにはどうすればよいですか?

public string connstring = "";

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack != true)
    {
        connstring = ConfigurationManager.ConnectionStrings["connString"].ToString();
        MySqlConnection connection = new MySqlConnection(connstring);
        // ----
    }
}
4

7 に答える 7

3

で接続文字列をすでに定義しているweb.configので、各ページで再度定義する必要はありません。各ページで新しい文字列変数を作成する代わりに、ConfigurationManagerから接続文字列を使用するだけです。

ConfigurationManager.ConnectionStrings["connString"].ToString()

接続文字列を使用する前にnullをチェックすると、より良い結果が得られます。

if(ConfigurationManager.ConnectionStrings.Count > 0 && 
ConfigurationManager.ConnectionStrings["connString"] != null)
于 2012-12-18T06:18:12.737 に答える
2

次のようにwebconfigファイルでdecarereできます

<configuration>
  < connectionstring>
     <add name="Name of Your Connection" connectionstring=""/>
  <connectionstring>
<configuration>

これを Webonfig で宣言した後、次のように別の .Aspx ページで接続文字列を呼び出すことができます。

追加

system.web.configuration;

次に、接続文字列を次のように呼び出すことができます

    string connection = WebConfigurationManager.ConnectionStrings["Name Of your Connection"].ConnectionString;
sqlconnection con=new sqlconnection[con];
...

dataUtilityクラスを作成して、connectionstringプロジェクト全体に 1 回だけ定義できます。

class dataUtility
{
 string connection = WebConfigurationManager.ConnectionStrings["Name Of your   Connection"].ConnectionString;

Public void Insert()
{
sqlconnection con=new sqlconnection(connection);
...
}
}

クラスのオブジェクトだけを作成し、挿入メソッドを呼び出す必要があります。DAL 全体を 1 か所に記述する必要があります。

于 2012-12-18T06:34:05.007 に答える
1

Web 構成ファイルを追加し、接続を ConnectionString 部分に配置します。

<configuration>
    <connectionStrings>
        <add name="ConnectionName" connectionString="your connection string" providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

public クラスに静的 SqlConnection を追加します。

public class myClass
{
    public static System.Data.SqlClient.SqlConnection con;
}

アプリケーション ロード (global.asax) で一度インスタンス化します。

void Application_Start(object sender, EventArgs e)
{
    myClass.con = new System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings["connString"].ToString());
}
于 2012-12-18T06:21:07.000 に答える
1

このような接続をインスタンス化する別のクラスを作成してみませんか

于 2012-12-18T06:21:34.723 に答える
1

web.config に追加します

<connectionStrings>
    <add name="StrConnection" connectionString="Server=SERVER_NAME;Database=DATABASE_NAME;user id=USER_NAME;password=PASSWORD;"/>
</connectionStrings>

次のように、データアクセス層に静的クラスを作成します。

public static class sqlConnectionProvider
    {
        public static string GetConnection()
        {
            return ConfigurationManager.ConnectionStrings["StrConnection"].ConnectionString;
        }

    }

そして、次のようなビジネス アクセス レイヤーから呼び出します。

return DataAccessLayer.ExecuteDataset(sqlConnectionProvider.GetConnection(), CommandType.StoredProcedure, spName, parameter);

ありがとう

于 2012-12-18T06:21:35.693 に答える
1

各ページで接続文字列を定義していません。各ページでそれを読んでいます。これを行いたくない場合は、それを管理する静的クラス (またはsingleton ) を用意することをお勧めします。

通常、UI コードでデータベース関連の操作を行うべきではありません。より良いアプローチは、作業を一連のクラス (データ層) に委任することです。単純なデータ レイヤーは、すべてのデータ アクセスを行う単純なシングルトン クラスである可能性があります。

public class DataManager
{
    private static DataManager _instance;

    private DataManager() {}

    public static DataManager Instance
    {
        get
        {
            if (_instance == null)
                _instance = new DataManager();
            return _instance;
        }
    }

    public DbConnection GetConnection()
    {
        return new MySqlConnection(ConfigurationManager.ConnectionStrings["connString"].ToString());
    }

    ...
}

明らかに、これは非常に単純なクラスであり、大規模なプロジェクトには適していません。EntityFrameworkなどのORMツールの使用を検討する必要があります。


関連するものを 1 か所にまとめることを絶対に検討する必要があります。これがルールです。メソッド呼び出し以外のコードを繰り返さないでください (この場合、web.config から接続文字列を読み取ります)。web.config で接続文字列の名前を変更するとどうなりますか?

データ アクセス レイヤーを設計する際のガイドラインについては、次のリンクを参照してください。

http://en.wikipedia.org/wiki/Data_access_layer
http://msdn.microsoft.com/en-us/library/ee658127.aspx
http://weblogs.asp.net/cumpsd/archive/2005/04/ 24/404058.aspx

于 2012-12-18T06:33:03.603 に答える
-1

これが私がすることです:

すべての .Net アプリケーションに UTILITIES プロジェクトを追加します。ユーティリティ プロジェクトに Misc.cs という名前のファイルを追加します。

このファイルに、アプリケーション全体に共通で何らかの形で使用されるすべての関数を追加します。そこに新しい関数を追加します

Public string GetConnectionString()
{
    return ConfigurationManager.ConnectionStrings["connString"].ToString();
}

これは、接続文字列を変更した一般的な場所です。好きな場所で使用してください。さらに抽象化が必要な場合は、DAL (データ アクセス レイヤー) を記述します。接続文字列、コマンド文字列などのプロパティを DAL クラスで定義します。FetchData (一般的な select メソッドを記述)、Save data (一般的な update/save ロジックをここに記述) などのメソッドを追加します。フロントエンドから次のように呼び出します

DataTable/DataSet loobj = [You_Dal_Class_Object].FetchData([Your_select_command_here];

リンク: http://www.mssqltips.com/sqlservertip/2034/writing-a-data-access-layer-dal-for-sql-server/ http://msdn.microsoft.com/en-us/library/ aa581778.aspx

于 2012-12-18T06:39:22.483 に答える