web-dev-qa-db-ja.com

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

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>

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

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

351
Moham ad Jafari

次のことはできません。

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

あなたのアセンブリはまたSystem.Configuration.dllへの参照を必要とします

449
Duffp

これは非常によくある質問なので、4つの簡単なステップで簡単に従うことができるように、Visual Studioからスクリーンショットをいくつか用意しました。

get connection string from app.config

278
Fredrick Gauss
string str = Properties.Settings.Default.myConnectionString; 
32
gjijo

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

28

最初にあなたのページにSystem.Configurationの参照を追加してください。

using System.Configuration;

それからあなたの app.config に従って、以下のように接続文字列を取得します。

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

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

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

これを試してみる

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

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

あなたが接続を使用したいときには、ウル形式でこれを行います。

 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
OREO

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

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

3
AmiNadimi

やってみました:

var connection = new ConnectionFactory().GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);
3
Vlad Bezden
string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;
2
khatami

あなたは以下のコードを使用して接続文字列を取得することができます -

using System; using System.Configuration;

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

これが参照です: App.configからの接続文字列

1
somesh

これは私のために働いた:

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

出力:

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

1
Talha Imam

問題は参照ではないようです、connectionsStringをnullにしているので、実行中のプロジェクトのconfigファイルに値を追加したことを確認してください。つまり、最初に起動/実行されるメインプログラム/ライブラリです。

1
Chandra Malla

まずあなたのプロジェクトにSystem.Configuration参照を追加し、それから接続文字列を取得するために以下のコードを使用しなければなりません。

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

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

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

次の投稿が役に立つかもしれません: DLLのapp.configからのConnectionStringはnull

1
Andrew

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

0
dew17

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

0
jjcaicedo