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

연결 문자열에 오타가 있습니다. "통합"과 "보안"사이에 공백이 필요합니다
Onur Omer

@OnurOmer-공간을 포함하도록 질문이 업데이트되었습니다 ( "IntegratedSecurity"대신 "Integrated Security")
SlimsGhost

답변:


484

다음을 수행 할 수 없습니다.

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

어셈블리에 대한 참조도 필요합니다 System.Configuration.dll


14
나는 이것이 C # 질문이라는 것을 알고 있지만 이것이 구글 검색 결과의 최상위이기 때문에 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

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

1
app.config가 프로젝트에 대한 링크로 추가되면 어떻게됩니까?
FrenkyB

2
연결 문자열이 앱 설정 인 경우에만 작동 <connectionStrings>하며 app.config (OP에서 요청한 것)에서 요소 를 검색하는 경우에는 작동하지 않습니다 .
BrainSlugs8383

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

나는 같은 문제가 있었다. 내 솔루션은 두 프로젝트에서 구축되었습니다. Class library및 클래스 라이브러리 프로젝트에 참조하는 웹 사이트. 문제는 App.configClass library프로젝트 에서 에 액세스하려고 했지만 시스템이 Web.config웹 사이트를 검색 한다는 것입니다. 연결 문자열을 안에 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 참조 오류가 발생했습니다.
Enigmatic Mind

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

색인을 사용하여 문자열을 읽고 하나씩 확인하여 문제를 해결했습니다. 이름을 사용하여 읽는 경우에도 여전히 같은 오류가 발생합니다.
C # 창 응용 프로그램을 개발할 때 문제가 있으며 asp.net 응용 프로그램에 문제가 없습니다. 설정에 올바르지 않은 것이 있어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.