C# 从App.config获取连接字符串
这是我的App.config:C# 从App.config获取连接字符串,c#,ado.net,exception-handling,connection-string,app-config,C#,Ado.net,Exception Handling,Connection String,App Config,这是我的App.config: 但当我的项目运行时,这是我的错误: 对象引用未设置为对象的实例 您是否尝试过: var connection = ConnectionFactory.GetConnection( ConfigurationManager.ConnectionStrings["Test"] .ConnectionString, DataBaseProvider); 你不能只做以下几件事: var connection = new ConnectionFacto
但当我的项目运行时,这是我的错误:
对象引用未设置为对象的实例
您是否尝试过:
var connection = ConnectionFactory.GetConnection(
ConfigurationManager.ConnectionStrings["Test"]
.ConnectionString, DataBaseProvider);
你不能只做以下几件事:
var connection = new ConnectionFactory().GetConnection(
ConfigurationManager.ConnectionStrings["Test"]
.ConnectionString, DataBaseProvider);
您的程序集还需要对
System.Configuration.dll
的引用。请检查您的引用下是否包含System.Configuration
dll。没有它,您将无法访问System.Configuration命名空间中的ConfigurationManager
类。1)创建新表单并添加以下内容:
var connection =
System.Configuration.ConfigurationManager.
ConnectionStrings["Test"].ConnectionString;
然后,当您要使用连接时,请在您的表单中执行以下操作:
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
就这样。你将连接到数据库,可以做一些事情
这是针对vb.net的,但逻辑是相同的 由于这是一个非常常见的问题,我准备了一些VisualStudio中的屏幕截图,以便在4个简单步骤中轻松完成
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()
string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;
您可以使用下面的代码行获取连接字符串-
string str = Properties.Settings.Default.myConnectionString;
以下是参考资料:
问题似乎不在于引用,您得到的连接字符串为null,因此请确保您已将该值添加到正在运行的项目的配置文件中,这意味着首先启动/执行的主程序/库。首先将
System.Configuration
的引用添加到页面中
using System; using System.Configuration;
var connectionString=ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
然后根据你的app.config获取连接字符串,如下所示
using System.Configuration;
就这样,现在您手中有了连接字符串,可以使用它了。试试这个
string conStr = ConfigurationManager.ConnectionStrings["Test"].ToString();
我引用了
System.Configuration
库,我也有相同的错误。
调试文件没有其app.config,请手动创建此文件。
错误是,我通过复制调试文件夹中的文件“appname.exe.config”解决了这个问题。IDE未创建该文件。此问题中的OP可能试图在dll中使用App.Config 在本例中,代码实际上是试图访问可执行文件的App.Config,而不是dll。由于找不到名称,因此返回Null,因此显示异常 以下帖子可能会有所帮助: 这对我很有效:
//Get Connection from web.config file
public static OdbcConnection getConnection()
{
OdbcConnection con = new OdbcConnection();
con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["con"].ConnectionString;
return con;
}
产出:
数据源=。;初始目录=OmidPayamak;IntegratedSecurity=True“
首先,您必须向项目添加
System.Configuration
引用,然后使用下面的代码获取连接字符串
string connection = System.Configuration.ConfigurationManager.ConnectionStrings["Test"].ConnectionString;
我也有同样的问题。我的解决方案是由两个项目组成的。一个是
类库
和一个引用类库项目的网站。问题是我试图访问类库
项目中的App.config
,但系统正在网站的Web.config
中搜索。我将Web.config中的连接字符串和…问题已解决
主要原因是,尽管在另一个程序集中使用了ConfigurationManager
,但它正在runnig项目中搜索。我通过使用索引读取字符串并逐个检查来解决问题。使用名称读取仍然会出现相同的错误。
我在开发C#窗口应用程序时遇到问题,我的asp.net应用程序中没有这个问题。设置中一定有不正确的地方。您可以使用此方法获取连接字符串
_connectionString = ConfigurationManager.ConnectionStrings["MYSQLConnection"].ConnectionString.ToString();
为了从app.cfg(在windows服务应用程序中)读取连接字符串,下面的代码适用于我
using System;
using System.Configuration;
private string GetConnectionString()
{
return ConfigurationManager.ConnectionStrings["MyContext"].ConnectionString;
}
上面的答案没有详细说明连接字符串索引中的值来自哪里
如上所述,要获取连接字符串,您可以说:
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connectionStringsSection.ConnectionStrings["CONNECTIONSTR"].ConnectionString = @"New Connection String";
要使用正确的值XXX
,请转到主项目web.config
文件并查找以下代码:
string conStr = ConfigurationManager.ConnectionStrings["XXX"].ToString();
当它显示name=
时,这些引号中的文本是您在上述代码中使用的XXX
的值。在我上面的示例中,它恰好是身份验证在将配置管理器放置到用户控件中时遇到此问题,并且这里没有一个解决方案对我有效
经过一些研究,似乎是ConfigurationManager。当尝试从DesignTime
访问ConnectionString时,ConnectionString将为null
从年开始,我提出了以下代码来检测DesignTime
,作为解决问题的方法:
<connectionStrings>
<add name="Authentication" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=Authentication;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Authentication.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
您将正在运行的应用程序的App.config?项目或某个dll放在哪里了?您需要首先添加对System.Configuration.dll的引用,并且您应该能够使用System.Configuration.ConfigurationManager。您的连接字符串有一个拼写错误。您需要在“集成”和“安全性”之间留一个空格“@OnurOmer-问题已更新为包含空格(“集成安全性”而不是“集成安全性”)爱这个答案。默认情况下,在我的VS(VS2012 Ultimate)版本中不包括此库,但使用System.Configuration仍然有效我确实必须添加引用,或者使用未加下划线,但ConfigurationManager未知。谢谢如果app.config被添加为一个项目的链接怎么办?这只在你的连接字符串是app设置的情况下起作用,如果从app.config中检索
元素(这是OP要求的!)则不起作用。我做了与你所说的相同的操作,但我得到了相同的空引用错误。我知道这是一个C问题,但是,由于这是谷歌搜索结果的顶部,要在VB中实现这一点,对于我们这些必须维护VB代码的人来说,这是System.Configuration.ConfigurationManager.ConnectionString(“Test”).ConnectionString
<connectionStrings>
<add name="Authentication" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=Authentication;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Authentication.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
public class MyUserControl : UserControl
{
....
public MyUserControl ()
{
InitializeComponent();
bool designMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
if (!designMode)
{
this.connectionString =
ConfigurationManager.ConnectionStrings["xxx"].ConnectionString;
}
}
}