30

asp.net の web.config ファイルから接続文字列を取得する方法を知りたいです。

私は以下の方法しか知りません。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

    namespace Sherserve.DataAccessLayer
    {
        public class DBGateway
        {
            public static string conString;

            public DBGateway()
            {
                conString = ConfigurationManager.ConnectionStrings["test"].ToString();
            }
        }
    }
4

5 に答える 5

45

を使用することConfigurationManager.ConnectionStringsが唯一の適切な方法です。健全性チェックで適切に使用するには、次のようなコードを使用できます。

public DBGateway()
{
    ConnectionStringSettings mySetting = ConfigurationManager.ConnectionStrings["test"];
    if (mySetting == null || string.IsNullOrEmpty(mySetting.ConnectionString))
        throw new Exception("Fatal error: missing connecting string in web.config file");
    conString = mySetting.ConnectionString;
}

これは、不可解な「null object」エラーの代わりに、接続文字列が欠落している場合に役立つエラーをスローします。

ConnectionStringSettingsクラスがToString()メソッドをオーバーライドしていることに注意してください。

public override string ToString()
{
    return this.ConnectionString;
}

したがって、使用ConfigurationManager.ConnectionStrings["test"].ToString()は同じですが、ConfigurationManager.ConnectionStrings["test"].ConnectionStringサニティチェックを実行する方が適切であり、個人的には、クラスに依存せずに実際のプロパティを使用する方がきれいに見えます。

于 2012-09-19T07:41:59.107 に答える
9

ここに解決策全体があります: -

string constring = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;
SqlConnection con = new SqlConnection(constring);
DataSet ds = new DataSet();
try
 {
   SqlDataAdapter dataAdapter = new SqlDataAdapter(query, con);
   SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
   con.Open();
   dataAdapter.Fill(ds, "table");
   return ds;
 }
 catch (Exception ex)
  {
  }
    finally
    {
        if (con.State == System.Data.ConnectionState.Open)
            con.Close();
    }

これは、データベースからデータテーブルにレコードを取得する方法です。

これがあなたが探していたものであることを願っています。

于 2012-09-19T07:38:23.237 に答える
0

WebAssistant クラスにメソッドがあります。WebAppName を含む appSettings にキーがあります。以下の行を確認してください。

<add key="DOMAIN_NAME" value="mRizvandi.com"/>

私の接続名には常に次のような「DomainName」+「DBConnectionString」テンプレートがあります。

<add name="mRizvandiDBConnectionString" connectionString=...

OK、文字列を渡さずに接続文字列を取得する準備がすべて整いました。

    public static string GetDBConnectionString()
    {
        string retValue = "";
        string domainUrl = "";
        string connectionKey = "";
        string dbConnectionString = "";

        domainUrl = GetDomainUrl();
        connectionKey = domainUrl.Substring(0, domainUrl.IndexOf(".")) + "DBConnectionString";
        dbConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings[connectionKey].ToString();
        retValue = dbConnectionString;

        return retValue;
    }

お役に立てば幸いです。

于 2014-02-26T18:17:26.080 に答える