Uzyskaj parametry połączenia z App.config

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

A to moja 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>

Ale kiedy mój projekt się uruchamia, to jest mój błąd:

Odwołanie do obiektu nie jest ustawione na instancję obiektu.

Moham ad Jafari
źródło
5
Gdzie umieściłeś ten plik App.config? Projekt uruchomionej aplikacji, a może dll? Najpierw potrzebujesz
abatishchev
3
Dodaj odwołanie do System.Configuration.dll, a powinieneś mieć możliwość korzystania z System.Configuration.ConfigurationManager.
daszarrin
Twój ciąg połączenia ma literówkę. Potrzebujesz odstępu między „zintegrowanym” a „bezpieczeństwem”
Onur Omer,
@OnurOmer - pytanie zostało zaktualizowane o miejsce („Zintegrowane zabezpieczenia” zamiast „Zintegrowane bezpieczeństwo”)
SlimsGhost

Odpowiedzi:

484

Czy nie możesz po prostu wykonać następujących czynności:

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

Twój zespół wymaga również odniesienia do System.Configuration.dll

Duffp
źródło
14
Wiem, że jest to pytanie w języku C #, ale ponieważ jest to szczyt wyników wyszukiwania Google, aby to zrobić w VB, to System.Configuration.ConfigurationManager.ConnectionStrings("Test").ConnectionStringdla tych z nas, którzy muszą zachować kod VB
JFA
296

Ponieważ jest to bardzo częste pytanie, przygotowałem kilka zrzutów ekranu z programu Visual Studio, aby ułatwić wykonanie 4 prostych kroków.

pobierz parametry połączenia z app.config

Fredrick Gauss
źródło
22
Uwielbiam tę odpowiedź. Domyślnie w mojej wersji VS (VS2012 Ultimate) ta biblioteka nie jest uwzględniona, ale using System.Configurationnadal działa
David Colwell
3
Naprawdę Miałem dodać odwołanie lub użycie nie zostało podkreślone, ale Menedżer konfiguracji jest nieznany. Dzięki!
CodingYourLife,
33
string str = Properties.Settings.Default.myConnectionString; 
gjijo
źródło
1
Co jeśli app.config zostanie dodany jako link do projektu?
FrenkyB
2
Działa to tylko wtedy, gdy ciąg połączenia jest ustawieniem aplikacji, nie zadziała, jeśli pobierzesz <connectionStrings>elementy z app.config (o co prosi OP!).
BrainSlugs83
31

Sprawdź także, czy System.Configurationpod odnośnikami umieściłeś bibliotekę DLL. Bez niego nie będziesz mieć dostępu do ConfigurationManagerklasy w przestrzeni nazw System.Configuration.

Carl Heinrich Hancke
źródło
22

Najpierw dodaj odniesienie System.Configurationdo swojej strony.

using System.Configuration;

Następnie Zgodnie z app.config pobierz ciąg połączenia w następujący sposób.

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

To wszystko, teraz masz ciąg połączenia w ręce i możesz go użyć.

Tapan Kumar
źródło
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;     
}
Gobind Mandal
źródło
6

Wypróbuj to

string abc = ConfigurationManager.ConnectionStrings["CharityManagement"].ConnectionString;
vishu9219
źródło
3

1) Utwórz nowy formularz i dodaj go:

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

kiedy chcesz użyć połączenia, zrób to w swojej formie:

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

i to wszystko. Zostaniesz podłączony do bazy danych i będziesz mógł robić różne rzeczy.

Dotyczy to vb.net, ale logika jest taka sama.

OREO
źródło
3

Czy próbowałeś:

var connection = new ConnectionFactory().GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);
Vlad Bezden
źródło
3

Miałem ten sam problem. moje rozwiązanie zostało zbudowane z dwóch projektów. A Class libraryoraz strona internetowa odnosząca się do projektu biblioteki klas. Problem polegał na tym, że próbowałem uzyskać dostęp do App.configmojego Class libraryprojektu, ale system przeszukiwał Web.configwitrynę. Wstawiłem ciąg połączenia Web.configi ... problem rozwiązany!

Głównym powodem było to, że pomimo ConfigurationManagerużycia w innym zestawie, szukał w projekcie runnig.

AmiNadimi
źródło
3

Możesz użyć tej metody, aby uzyskać parametry połączenia

using System; 
using System.Configuration;

private string GetConnectionString()
{
    return ConfigurationManager.ConnectionStrings["MyContext"].ConnectionString;
}
Hidayet R. Colkusu
źródło
2
string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;
khatami
źródło
2

Najpierw musisz dodać System.Configurationodniesienie do swojego projektu, a następnie użyć poniższego kodu, aby uzyskać parametry połączenia.

_connectionString = ConfigurationManager.ConnectionStrings["MYSQLConnection"].ConnectionString.ToString();
Sagar Jaybhay
źródło
2

To działało dla mnie:

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

Wyjścia:

Źródło danych = .; Początkowy katalog = OmidPayamak; IntegratedSecurity = True ”

Talha Imam
źródło
1

Możesz pobrać parametry połączenia, używając poniższego wiersza kodu -

using System; using System.Configuration;

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

Oto odniesienie: ciąg połączenia z App.config

somesh
źródło
2
Zrobiłem to samo, co powiedziałeś, ale otrzymuję ten sam błąd odniesienia.
Enigmatic Mind
1

Wygląda na to, że problem nie dotyczy odniesienia, otrzymujesz ciąg połączenia jako zerowy, więc upewnij się, że dodałeś wartość do pliku konfiguracyjnego twojego uruchomionego projektu, co oznacza, że ​​główny program / biblioteka jest uruchamiana / uruchamiana jako pierwsza.

Chandra Malla
źródło
1

Możliwe, że OP w tym pytaniu próbuje użyć App.Config w bibliotece dll.

W tym przypadku kod faktycznie próbuje uzyskać dostęp do App.Config pliku wykonywalnego, a nie dll. Ponieważ nie znaleziono nazwy, zwracana jest wartość Null, stąd pokazany wyjątek.

Pomocny może być następujący post: ConnectionString z app.config DLL jest pusty

Andrzej
źródło
0

Odwołałem się do System.Configurationbiblioteki i mam ten sam błąd. Pliki debugowania nie miały pliku app.config, utwórz ręcznie ten plik. Błąd polega na tym, że rozwiązałem to kopiowanie pliku „appname.exe.config” w folderze debugowania. IDE nie utworzyło pliku.

jjcaicedo
źródło
0

Rozwiązałem problem, używając indeksu do odczytu łańcucha i sprawdzając jeden po drugim. Czytanie przy użyciu nazwy nadal powoduje ten sam błąd.
Mam problem podczas tworzenia aplikacji w oknie C #, nie miałem problemu w mojej aplikacji asp.net. W ustawieniu musi być coś, co jest nie tak.

dew17
źródło