c# connectionstrings - 從App.config獲取連接字符串




configurationmanager get (16)

由於這是非常常見的問題,我從Visual Studio準備了一些屏幕截圖,以便通過4個簡單步驟輕鬆完成。

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>

但是當我的項目運行時,這是我的錯誤:

你調用的對像是空的。


我引用System.Configuration庫和我有同樣的錯誤。 調試文件沒有他們的app.config,手動創建這個文件。 錯誤是,我解決了這個問題,在調試文件夾中復製文件“appname.exe.config”。 IDE不是創建該文件。


首先,您必須將System.Configuration引用添加到您的項目,然後使用下面的代碼來獲取連接字符串。

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

嘗試一下

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

這個問題中的OP可能試圖在一個dll中使用App.Config。

在這種情況下,代碼實際上是試圖訪問可執行文件的App.Config而不是dll。 由於找不到名稱,您將返回Null,因此會顯示異常。

以下文章可能會有所幫助: 來自DLL的app.config的ConnectionString為空


您可以使用下面的代碼行獲取連接字符串 -

using System; using System.Configuration;

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

這裡是一個引用: 來自App.config的連接字符串


string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;

我通過使用索引來讀取字符串並逐個檢查來解決問題。 使用名稱閱讀仍然會出現相同的錯誤。
我在開發C#窗口應用程序時遇到了問題,在我的asp.net應用程序中沒有遇到問題。 在這個環境中一定有一些不對的東西。


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,但邏輯是相同的。


string str = Properties.Settings.Default.myConnectionString; 

首先將System.Configuration的引用添加到您的頁面。

using System.Configuration;

然後根據你的app.config獲取連接字符串如下。

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

這就是現在你手中的連接字符串,你可以使用它。


//Get Connection from web.config file
public static OdbcConnection getConnection()
{
    OdbcConnection con = new OdbcConnection();
    con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["con"].ConnectionString;
    return con;     
}

這對我有效:

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

輸出:

數據源=;初始目錄= OmidPayamak; IntegratedSecurity = True“


我遇到過同樣的問題。 我的解決方案是由兩個項目組成的。 Class library和引用類庫項目的網站。 問題是我試圖訪問我的Class library項目中的App.config ,但係統在Web.config中搜索網站。 我把連接字符串放在Web.config裡面,然後......問題解決了!

主要原因是儘管ConfigurationManager在另一個程序集中使用,它正在runnig項目中搜索。


同時檢查你是否在你的引用下包含了System.Configuration DLL。 沒有它,你將無法訪問System.Configuration命名空間中的ConfigurationManager類。






c# ado.net exception-handling connection-string app-config