Nhận chuỗi kết nối từ App.config


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

Và đây là App.config của tôi:

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

Nhưng khi dự án của tôi chạy thì đây là lỗi của tôi:

Tham chiếu đối tượng không được đặt thành một thể hiện của một đối tượng.


5
Bạn đã đặt App.config đó ở đâu? Dự án ứng dụng bạn đang chạy hoặc có thể một số dll? Bạn cần đầu tiên
abatishchev

3
Thêm một tham chiếu đến System.Configuration.dll và bạn sẽ có thể sử dụng System.Configuration.ConfigurationManager.
daszarrin

Chuỗi kết nối của bạn có một lỗi đánh máy. Bạn cần một khoảng trống giữa "Tích hợp" và "Bảo mật"
Onur Omer

@OnurOmer - câu hỏi đã được cập nhật để bao gồm không gian ("Bảo mật tích hợp" thay vì "Tích hợp bảo mật")
SlimsGhost

Câu trả lời:


484

Bạn không thể làm như sau:

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

Hội đồng của bạn cũng cần một tài liệu tham khảo System.Configuration.dll


14
Tôi biết rằng đây là câu hỏi C #, nhưng vì đây là câu hỏi hàng đầu trong kết quả tìm kiếm của google, để thực hiện điều này trong VB, nó System.Configuration.ConfigurationManager.ConnectionStrings("Test").ConnectionStringdành cho những người trong chúng ta phải duy trì mã VB
JFA

296

Vì đây là câu hỏi rất phổ biến, tôi đã chuẩn bị một số ảnh chụp màn hình từ Visual Studio để dễ dàng thực hiện theo 4 bước đơn giản.

nhận chuỗi kết nối từ app.config


22
Yêu câu trả lời này. Theo mặc định trong phiên bản VS của tôi (VS2012 Ultimate) thư viện này không được bao gồm, nhưng using System.Configurationvẫn hoạt động
David Colwell

3
Tôi thực sự HAD để thêm tài liệu tham khảo hoặc việc sử dụng không được gạch chân nhưng vẫn chưa biết Trình quản lý cấu hình. Cảm ơn!
CodingYourLife

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

1
Điều gì xảy ra nếu app.config được thêm vào dưới dạng liên kết đến dự án?
FrenkyB

2
Điều này sẽ chỉ hoạt động nếu chuỗi kết nối của bạn là cài đặt ứng dụng, nó sẽ không hoạt động nếu truy xuất <connectionStrings>các phần tử từ app.config (đó là những gì OP yêu cầu!).
BrainSlugs83

31

Ngoài ra kiểm tra xem bạn đã bao gồm System.Configurationdll dưới tài liệu tham khảo của bạn. Không có nó, bạn sẽ không có quyền truy cập vào ConfigurationManagerlớp trong không gian tên System.Configuration.


22

Đầu tiên Thêm một tài liệu tham khảo System.Configurationđến trang của bạn.

using System.Configuration;

Sau đó, theo app.config, hãy lấy chuỗi kết nối như sau.

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

Đó là bây giờ bạn có chuỗi kết nối trong tay và bạn có thể sử dụng nó.


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

Thử thứ này đi

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

3

1) Tạo một hình thức mới và thêm này:

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

sau đó khi bạn muốn sử dụng kết nối, hãy làm điều này ở dạng 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()

và đó là nó. Bạn sẽ được kết nối với DB và có thể làm công cụ.

Điều này là cho vb.net nhưng logic là như nhau.


3

Bạn đã thử chưa:

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

3

Tôi gặp vấn đề tương tự. giải pháp của tôi được xây dựng từ hai dự án. A Class libraryvà một trang web tham khảo dự án thư viện lớp. vấn đề là tôi đã cố gắng truy cập App.configvào Class librarydự án của mình nhưng hệ thống đang tìm kiếm trên Web.configtrang web. Tôi đặt chuỗi kết nối bên trong Web.configvà ... vấn đề đã được giải quyết!

Lý do chính là mặc dù ConfigurationManagerđã được sử dụng trong một hội đồng khác, nó đã tìm kiếm bên trong dự án runnig.


3

Bạn có thể sử dụng phương pháp này để lấy chuỗi kết nối

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

Trước tiên, bạn phải thêm System.Configurationtham chiếu cho dự án của bạn và sau đó sử dụng mã dưới đây để có được chuỗi kết nối.

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

2

Điều này làm việc cho tôi:

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

Đầu ra:

Nguồn dữ liệu =.; Danh mục ban đầu = OmidPayamak; IntegrationSecurity = True "


1

Bạn có thể tìm nạp chuỗi kết nối bằng cách sử dụng dòng mã bên dưới -

using System; using System.Configuration;

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

Đây là một tham chiếu: Chuỗi kết nối từ App.config


2
Tôi đã làm giống như bạn nói nhưng cùng một lỗi tham chiếu null tôi đang nhận được.
Tâm trí bí ẩn

1

Có vẻ như vấn đề không nằm ở tham chiếu, bạn đang nhận được chuỗi kết nối là null, vì vậy hãy chắc chắn rằng bạn đã thêm giá trị vào tệp cấu hình mà dự án đang chạy của bạn có nghĩa là chương trình / thư viện chính được khởi động / thực thi trước.


1

Có thể OP trong câu hỏi này đang cố gắng sử dụng App.Config trong một dll.

Trong trường hợp này, mã thực sự đang cố gắng truy cập App.Config của tệp thực thi chứ không phải dll. Vì tên không được tìm thấy, bạn nhận được một Null được trả về, do đó ngoại lệ được hiển thị.

Bài đăng sau đây có thể hữu ích: ConnectionString từ app.config của DLL là null


0

Tôi đã tham khảo System.Configurationthư viện và tôi có cùng một lỗi. Các tệp gỡ lỗi không có app.config, hãy tạo thủ công tệp này. Lỗi là, tôi đã giải quyết việc sao chép tệp "appname.exe.config" này trong thư mục gỡ lỗi. IDE không tạo được tệp.


0

Tôi đã giải quyết vấn đề bằng cách sử dụng chỉ mục để đọc chuỗi và kiểm tra từng cái một. Đọc sử dụng tên vẫn cho lỗi tương tự.
Tôi gặp vấn đề khi phát triển ứng dụng cửa sổ C #, tôi không gặp vấn đề gì trong ứng dụng asp.net của mình. Phải có một cái gì đó trong cài đặt không đúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.