2012-09-19 35 views
23

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

私はちょうど以下の方法を知っています。これは、あなたがデータテーブルに、データベースからレコードを取得する方法である

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(); 
    } 

- :ここで

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(); 
      } 
     } 
    } 
+2

:私の接続クラスで

<configuration> <connectionStrings> <add name="DBConnection" connectionString="Data Source=myaddress;Initial Catalog=MyCatalog;User ID=myuser;Password=pass;Encrypt=True;TrustServerCertificate=False" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration> 

を"test"]。ConnectionString; 'しかし、あなたが得た唯一の正しい方法です。 –

+0

どうしたのですか? conString = ConfigurationManager.ConnectionStrings ["test"] ToString(); –

+2

@Mitch [こちら](http://meta.stackexchange.com/questions/76195/how-to-deal-with-have-you-tried-google-comments) - あなたのコメントは誰にとっても建設的なものではありません。 –

答えて

34

は、あなたがそのようなコードを持つことができますチェック"ヌルオブジェクト"エラー。

価値ConnectionStringSettingsクラスがToString()メソッドをオーバーライドしていることを言及する:

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

だから、それはあなたがまだ良い健全性チェックを実行し、個人的には使用するクリーナーに見えるしかしようConfigurationManager.ConnectionStrings["test"].ToString()を使用することは同じであることを意味実際のプロパティとそれに与えるクラスに依存しないでください。

+0

ありがとう:)あなたは私の知識を増やしました。 –

+0

ここで、 'conString'は' conString = mySetting.ConnectionString; '行からのものです。 – sam

+0

クラスの@sam静的フィールド: 'public static string conString;'、質問のコードを参照してください。 –

8

は、全体のソリューションです。

これはあなたが探していたものです。不可解なのではなく、これは、接続文字列が欠落している場合に便利なエラーがスローされます

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; 
} 

:正気でそれを正しく使用するために、ConfigurationManager.ConnectionStringsが唯一の正しい方法についてです使用

+0

私は接続文字列を取得する方法が欲しいだけです。 –

+5

あなたは質問を読むべきです.... –

0

WebAssistantクラスにメソッドがあります。 iは以下の行をチェック、私のWebAppNameが含まれているのappSettingsのキーを持っている:

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

と私の接​​続名alwyasを持つ "ドメイン名" + "DBConnectionString" テンプレートのような:

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

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

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; 
    } 

私は役に立つと思います。

0

次のコードは私のために機能します。 私はweb.configファイルに

web.configファイルに設立ないのConnectionString場合に例外を追加しました:それは `ConfigurationManager.ConnectionStrings [あるべき

static internal string GetSqlConnectionString(){ 

try { 
    ConnectionStringSettings mySetting = ConfigurationManager.ConnectionStrings("DataBaseConnection"); 
    if (mySetting == null) 
     throw new Exception("Database connection settings have not been set in Web.config file"); 

    return mySetting.ConnectionString; 

} catch (Exception ex) { 
    throw; 
}} 
+0

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、自分の投稿の下にコメントを残してください。自分の投稿にいつもコメントをつけることができます。そして、十分な[評判](http://stackoverflow.com/help/whats-reputation) [任意の投稿にコメントする]ことができます(http://stackoverflow.com/help/privileges/comment)。 –

関連する問題