App.configから接続文字列を取得する


380
var connection = ConnectionFactory.GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);

そして、これは私のApp.configです。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name="Test" connectionString="Data Source=.;Initial Catalog=OmidPayamak;Integrated Security=True" providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

しかし、私のプロジェクトを実行すると、これは私のエラーです:

オブジェクト参照がオブジェクトインスタンスに設定されていません。


5
そのApp.configをどこに配置しましたか?あなたが実行しているアプリケーションのプロジェクトまたはおそらくいくつかのdll?最初に必要なもの
abatishchev

3
System.Configuration.dllへの参照を追加すると、System.Configuration.ConfigurationManagerを使用できるようになります。
daszarrin 2013

接続文字列にタイプミスがあります。「統合」と「セキュリティ」の間にスペースが必要
Onur Omer

@OnurOmer-スペースが含まれるように質問が更新されました( "IntegratedSecurity"ではなく "Integrated Security")
SlimsGhost

回答:


484

次のことはできませんか?

var connection = 
    System.Configuration.ConfigurationManager.
    ConnectionStrings["Test"].ConnectionString;

アセンブリには、 System.Configuration.dll


14
私はこれがC#の質問であることを知っていますが、これはGoogle検索結果の一番上なので、VBでこれを行うSystem.Configuration.ConfigurationManager.ConnectionStrings("Test").ConnectionStringには、VBコードを維持する必要がある私たちのためのものです
JFA

296

これは非常に一般的な質問なので、Visual Studioからいくつかのスクリーンショットを用意して、4つの簡単な手順で簡単に実行できるようにしました。

app.configから接続文字列を取得する


22
この答えが大好きです。私のバージョンのVS(VS2012 Ultimate)のデフォルトでは、このライブラリは含まれていませんが、using System.Configuration引き続き機能します
David Colwell

3
私は実際に参照を追加する必要がありました、または使用に下線が引かれていませんが、それでもConfigurationManagerは不明です。ありがとう!
CodingYourLife 2017

33
string str = Properties.Settings.Default.myConnectionString; 

1
app.configがプロジェクトへのリンクとして追加された場合はどうなりますか?
FrenkyB 2015

2
これは、接続文字列がアプリの設定である場合にのみ機能し<connectionStrings>、app.configから要素を取得する場合には機能しません(OPが要求しているものです!)。
BrainSlugs83

31

System.Configuration参照の下にDLL が含まれていることも確認してください。これがないと、ConfigurationManagerSystem.Configuration名前空間のクラスにアクセスできません。


22

最初にSystem.Configurationページへの参照を追加します。

using System.Configuration;

次に、app.configに従って、次のように接続文字列を取得します。

string conStr = ConfigurationManager.ConnectionStrings["Test"].ToString();

これで接続文字列を手に入れて使用できるようになりました。


16
//Get Connection from web.config file
public static OdbcConnection getConnection()
{
    OdbcConnection con = new OdbcConnection();
    con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["con"].ConnectionString;
    return con;     
}

6

これを試してください

string abc = ConfigurationManager.ConnectionStrings["CharityManagement"].ConnectionString;

3

1)新しいフォームを作成し、これを追加します。

Imports System.Configuration
Imports Operaciones.My.MySettings

Public NotInheritable Class frmconexion

    Private Shared _cnx As String
    Public Shared Property ConexionMySQL() As String
        Get
            Return My.MySettings.Default.conexionbd
        End Get
        Private Set(ByVal value As String)
            _cnx = value
        End Set
    End Property

End Class

次に、接続を使用する場合は、ur形式でこれを実行します。

 Private Sub frmInsert_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim cn As New MySqlConnection(frmconexion.ConexionMySQL)
cn.open()

以上です。DBに接続され、さまざまなことができます。

これはvb.net用ですが、ロジックは同じです。


3

やってみました:

var connection = new ConnectionFactory().GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);

3

同じ問題がありました。私のソリューションは2つのプロジェクトから構築されました。A Class libraryとクラスライブラリプロジェクトへの参照のウェブサイト。問題はApp.configClass libraryプロジェクトでにアクセスしようとしたが、システムがWeb.configWebサイトを検索していたことでした。内部に接続文字列を入れますWeb.configと、...問題が解決しました!

主な理由はConfigurationManager、別のアセンブリで使用されていたにもかかわらず、runnigプロジェクト内を検索していたためです。


3

このメソッドを使用して接続文字列を取得できます

using System; 
using System.Configuration;

private string GetConnectionString()
{
    return ConfigurationManager.ConnectionStrings["MyContext"].ConnectionString;
}

2
string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;

2

最初にSystem.Configurationプロジェクトへの参照を追加してから、以下のコードを使用して接続文字列を取得する必要があります。

_connectionString = ConfigurationManager.ConnectionStrings["MYSQLConnection"].ConnectionString.ToString();

2

これは私のために働きました:

string connection = System.Configuration.ConfigurationManager.ConnectionStrings["Test"].ConnectionString;

出力:

データソース= .;初期カタログ= OmidPayamak; IntegratedSecurity = True "


1

以下のコード行を使用して接続文字列をフェッチできます-

using System; using System.Configuration;

var connectionString=ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

ここに参照があります: App.configからの接続文字列


2
私はuが言ったのと同じことをしましたが、同じnull参照エラーが発生しています。
謎めいた心

1

問題は参照に関連していないようです。接続文字列がnullとして取得されているため、実行中のプロジェクトの構成ファイルに値を追加してあることを確認してください。


1

この質問のOPが、dll内でApp.Configを使用しようとしている可能性があります。

この場合、コードは実際にはDLLではなく実行可能ファイルのApp.Configにアクセスしようとしています。名前が見つからないため、Nullが返され、例外が表示されます。

次の投稿が役立つ場合があります: DLLのapp.configからのConnectionStringがnullです


0

System.Configurationライブラリを参照したところ、同じエラーが発生しました。デバッグファイルにapp.configがありませんでした。手動でこのファイルを作成してください。エラーは、デバッグフォルダーにファイル「appname.exe.config」をコピーすることで解決しました。IDEはファイルを作成しませんでした。


0

インデックスを使用して文字列を読み取り、1つずつチェックすることで問題を解決しました。名前を使用して読み取ると、同じエラーが発生します。
C#ウィンドウアプリケーションを開発するときに問題が発生しましたが、asp.netアプリケーションには問題がありませんでした。正しくない設定があるはずです。

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