web.configから接続文字列を読み取る


253

から接続文字列を読み取るにはどうすればよいですか web.configファイルクラスライブラリ内のパブリッククラスですか?

私はもう試した:

WebConfigurationManager

ConfigurationManager

しかし、これらのクラスは私のクラスライブラリ内では認識されません。

回答:


177

System.Configuration参照として追加します。

奇妙な理由で、デフォルトでは含まれていません。



66

C#

// Add a using directive at the top of your code file    
using System.Configuration;

// Within the code body set your variable    
string cs = ConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionString;

VB

' Add an Imports statement at the top of your code file    
Imports System.Configuration

' Within the code body set your variable    
Dim cs as String = ConfigurationManager.ConnectionStrings("connectionStringName").ConnectionString

3
"コードファイルの先頭に参照を追加します" =>これは参照ではなく、usingディレクティブです。
Mishax 2014

25

System.Configuration参照として追加してください:

 using System.Configuration;

 ...

 string conn = 
    ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString;

19

まだ追加されていない場合は、System.Configurationアセンブリへの参照を追加する必要があると思います。

また、コードファイルの先頭に次の行を挿入する必要がある場合もあります。

using System.Configuration;

タイプミス、System.Configurationを使用する必要があります。
Nick Binnet、2011

14

VB:これはうまくいくはずです

ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString

C#、それは(アラのコメント通り)になります

ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString

これらの括弧は括弧である必要があります。
Charles Burns

1
@CharlesBurns、ありがとう、私は誤ってVBで書いた、C#では間違いなく ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa

ああ、それがVBだとは知らなかった。タイプミスだと思いました。ある意味、私の間違いも。
Charles Burns

13
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.DataVisualization.Charting;
using System.Web.UI.WebControls;  

C#

string constring = ConfigurationManager.ConnectionStrings["ABCD"].ConnectionString;
                using (SqlConnection con = new SqlConnection(constring))

以下のWEB.CONFIGファイルコード

<connectionStrings>
    <add name="ABCD" connectionString="Data Source=DESKTOP-SU3NKUU\MSSQLSERVER2016;Initial Catalog=TESTKISWRMIP;Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>

上記のコードのABCDは接続名です


追加:接続文字列の名前を受け入れるインデクサーの他に、整数インデックスを使用することもできます。これは、forループ(for (int i = 0; i < numOfConnections; i++) { var conn = ConfigurationManager.ConnectionStrings[i]; ... })ですべての接続文字列を読み取り、コンボボックスで選択可能にする場合に便利です。を使用var numOfConnections = ConfigurationManager.ConnectionStrings.Count;すると、接続文字列の数を判別できます。この例でconn.Nameは、接続の名前が含まれています。
Matt

11

このクラスは、ページまたはクラスの上部で呼び出す必要があります。

using System.Configuration;

次に、このメソッドを使用してsqlconnectionオブジェクトに渡す準備ができる接続文字列を返し、次のように作業を続行できます。

    private string ReturnConnectionString()
    {
       // Put the name the Sqlconnection from WebConfig..
        return ConfigurationManager.ConnectionStrings["DBWebConfigString"].ConnectionString;
    }

明確にするために、これはWeb Configの値です。

  <add name="DBWebConfigString" connectionString="....." />   </connectionStrings>

Webプロジェクトでは、System.Web.ConfigurationのWebConfigurationManagerを使用することをお勧めします。
BJladu4

9
using System.Configuration;


string conn = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();

4
using System.Configuration;


string connString = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();

グローバルマシンの構成と移植性がある可能性があるため、ConnectionStrings [index]は使用しないでください。


2

まずこれを追加します:

using System.Configuration;

1

誰もがそれを追加することを示唆しているようです

using System.Configuration;

それは本当です。

しかし、ReSharperのVisual Studio拡張機能のインストールについて考えてみることをお勧めしますか?

インストールすると、クラスが定義されていないというエラーが表示される代わりに、クラスが含まれているアセンブリを示すプロンプトが表示され、必要なusingステートメントを追加するかどうかを尋ねられます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.