Dapatkan string koneksi dari App.config

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

Dan ini adalah App.config saya:

<?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>

Tetapi ketika proyek saya berjalan ini adalah kesalahan saya:

Referensi objek tidak disetel ke instance objek.

Moham ad Jafari
sumber
5
Di mana Anda meletakkan App.config itu? Proyek aplikasi yang sedang Anda jalankan atau mungkin dll? Anda perlu lebih dulu
abatishchev
3
Tambahkan referensi ke System.Configuration.dll, dan Anda harus dapat menggunakan System.Configuration.ConfigurationManager.
daszarrin
String koneksi Anda memiliki salah ketik. Anda memerlukan ruang antara "Terintegrasi" dan "Keamanan"
Onur Omer
@OnurOmer - pertanyaan telah diperbarui untuk menyertakan ruang ("Keamanan Terpadu" dan bukan "IntegratedSecurity")
SlimsGhost

Jawaban:

484

Tidak bisakah kamu melakukan yang berikut ini:

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

Majelis Anda juga perlu referensi System.Configuration.dll

Duffp
sumber
14
Saya tahu ini adalah pertanyaan C #, tetapi karena ini adalah bagian atas hasil pencarian google, untuk melakukan ini di VB, itu System.Configuration.ConfigurationManager.ConnectionStrings("Test").ConnectionStringuntuk kita yang harus menjaga kode VB
JFA
296

Karena ini adalah pertanyaan yang sangat umum, saya telah menyiapkan beberapa tangkapan layar dari Visual Studio untuk membuatnya mudah diikuti dalam 4 langkah sederhana.

dapatkan string koneksi dari app.config

Fredrick Gauss
sumber
22
Sukai jawaban ini. Secara default di versi VS (VS2012 Ultimate) saya, perpustakaan ini tidak termasuk, tetapi using System.Configurationmasih berfungsi
David Colwell
3
Saya benar-benar HARUS menambahkan referensi atau penggunaannya tidak digarisbawahi tetapi masih ConfigurationManager tidak diketahui. Terima kasih!
CodingYourLife
33
string str = Properties.Settings.Default.myConnectionString; 
gijo
sumber
1
Bagaimana jika app.config ditambahkan sebagai tautan ke proyek?
FrenkyB
2
Ini hanya akan berfungsi jika string koneksi Anda adalah pengaturan aplikasi, itu tidak akan berfungsi jika untuk mengambil <connectionStrings>elemen dari app.config (yang diminta OP!).
BrainSlugs83
31

Juga periksa apakah Anda sudah menyertakan System.Configurationdll di bawah referensi Anda. Tanpa itu, Anda tidak akan memiliki akses ke ConfigurationManagerkelas di System.Configuration namespace.

Carl Heinrich Hancke
sumber
22

Pertama Tambahkan referensi System.Configurationke halaman Anda.

using System.Configuration;

Kemudian Menurut app.config Anda dapatkan string koneksi sebagai berikut.

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

Itu saja sekarang Anda memiliki string koneksi di tangan Anda dan Anda dapat menggunakannya.

Tapan kumar
sumber
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
sumber
6

Coba ini

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

1) Buat formulir baru dan tambahkan ini:

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

lalu ketika Anda ingin menggunakan koneksi lakukan ini dalam bentuk 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()

dan itu saja. Anda akan terhubung ke DB dan dapat melakukan banyak hal.

Ini untuk vb.net tetapi logikanya sama.

OREO
sumber
3

Sudahkah Anda mencoba:

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

Saya memiliki masalah yang sama. solusi saya dibangun dari dua proyek. A Class librarydan situs web yang merujuk pada proyek perpustakaan kelas. masalahnya adalah saya mencoba mengakses App.configdi Class libraryproyek saya tetapi sistem mencari di Web.configsitus web. Saya memasukkan string koneksi ke dalam Web.configdan ... masalah terpecahkan!

Alasan utama adalah bahwa meskipun ConfigurationManagerdigunakan dalam majelis lain itu sedang mencari di dalam proyek runnig.

AmiNadimi
sumber
3

Anda dapat menggunakan metode ini untuk mendapatkan string koneksi

using System; 
using System.Configuration;

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

Pertama, Anda harus menambahkan System.Configurationreferensi ke proyek Anda dan kemudian menggunakan kode di bawah ini untuk mendapatkan string koneksi.

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

Ini bekerja untuk saya:

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

Output:

Sumber Data =.; Katalog Awal = OmidPayamak; IntegratedSecurity = True "

Talha Imam
sumber
1

Anda dapat mengambil string koneksi dengan menggunakan baris kode di bawah ini -

using System; using System.Configuration;

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

Berikut ini adalah referensi: Koneksi String dari App.config

Somesh
sumber
2
Saya melakukan hal yang sama seperti yang Anda katakan tetapi kesalahan referensi nol yang sama saya dapatkan.
Enigmatic Mind
1

Sepertinya masalah bukan dengan referensi, Anda mendapatkan connectionstring sebagai nol jadi harap pastikan Anda telah menambahkan nilai ke file konfigurasi proyek yang sedang berjalan berarti program / pustaka utama yang memulai / dijalankan terlebih dahulu.

Chandra Malla
sumber
1

Ada kemungkinan bahwa OP dalam pertanyaan ini mencoba menggunakan App.Config di dalam dll.

Dalam hal ini, kode sebenarnya mencoba untuk mengakses App.Config dari executable dan bukan dll. Karena nama itu tidak ditemukan, Anda mendapatkan Null kembali, maka pengecualian ditampilkan.

Posting berikut mungkin bermanfaat: ConnectionString dari app.config dari DLL adalah nol

Andrew
sumber
0

Saya mereferensikan System.Configurationperpustakaan dan saya memiliki kesalahan yang sama. File debug tidak memiliki app.config mereka, buat file ini secara manual. Kesalahannya adalah, saya memecahkan masalah ini dengan menyalin file "appname.exe.config" di folder debug. IDE tidak membuat file.

jjcaicedo
sumber
0

Saya memecahkan masalah dengan menggunakan indeks untuk membaca string dan memeriksa satu per satu. Membaca menggunakan nama masih memberikan kesalahan yang sama.
Saya memiliki masalah ketika saya mengembangkan aplikasi C # window, saya tidak memiliki masalah dalam aplikasi asp.net saya. Pasti ada sesuatu dalam pengaturan yang tidak benar.

dew17
sumber