Отримайте рядок з'єднання від 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? Вам потрібно спочатку
абатищев

3
Додайте посилання на System.Configuration.dll, і ви зможете використовувати System.Configuration.ConfigurationManager.
дазаррін

У вашому рядку з'єднання є помилка друку. Вам потрібен пробіл між "Інтегральною" та "Безпекою"
Онур Омер

@OnurOmer - питання було оновлено, щоб включити простір ("Інтегрована безпека" замість "IntegratedSecurity")
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все ще працює
Девід Колвелл

3
Я дійсно МАЮ додати посилання або використання не було підкреслено, але ConfigurationManager досі невідомий. Дякую!
CodingYourLife

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

1
Що робити, якщо додаток app.config додано як посилання на проект?
FrenkyB

2
Це буде працювати лише в тому випадку, якщо у вашому рядку підключення встановлено додаток, воно не працюватиме, якщо витягти <connectionStrings>елементи з app.config (про що вимагає ОП!).
BrainSlugs83

31

Також перевірте, що ви включили System.Configurationdll під своїми посиланнями. Без нього у вас не буде доступу до ConfigurationManagerкласу в просторі імен System.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

тоді, коли ви хочете використовувати з'єднання, зробіть це в ур-формі:

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

і це все. Ви підключитесь до БД і зможете виконувати завдання.

Це для vb.net, але логіка та ж.


3

Ти намагався:

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

3

У мене був той самий випуск. моє рішення будувалося з двох проектів. A Class libraryі веб-сайт, що посилається на проект бібліотеки класів. Проблема полягала в тому, що я намагався отримати доступ до App.configсвого Class 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
Я зробив те саме, що і сказав, але така ж нульова помилка посилання, яку я отримую.
Енігматичний розум

1

Здається, проблема не в посиланні, ви отримуєте stringstring як нульовий, тому переконайтеся, що ви додали значення до конфігураційного файлу запущеного проекту, тобто головна програма / бібліотека, яка починається / виконується першою.


1

Можливо, що ОП у цьому питанні намагається використовувати App.Config в межах dll.

У цьому випадку код насправді намагається отримати доступ до App.Config виконуваного файлу, а не dll. Оскільки ім’я не знайдено, ви отримуєте Null, що повертається, отже, показано виняток.

Наступна публікація може бути корисною: ConnectionString з app.config DLL є нульовим


0

Я посилався на System.Configurationбібліотеку, і у мене така ж помилка. Файли налагодження не мали їх app.config, створюйте цей файл вручну. Помилка в тому, що я вирішив це копіювання файлу "appname.exe.config" у папку налагодження. IDE не створив файл.


0

Я вирішив проблему, використовуючи індекс, щоб прочитати рядок і перевірити по черзі. Читання за допомогою імені все ще дає ту саму помилку.
У мене проблема, коли я розробляю програму для вікон C #, у мене не було проблеми в моєму додатку asp.net. В обстановці повинно бути щось, що невірно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.