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>
但是当我的项目运行时,这是我的错误:
对象引用未设置为对象的实例。
答案 0 :(得分:450)
你不能只做以下事情:
var connection =
System.Configuration.ConfigurationManager.
ConnectionStrings["Test"].ConnectionString;
您的程序集还需要引用System.Configuration.dll
答案 1 :(得分:278)
由于这是一个非常常见的问题,我已经从Visual Studio准备了一些屏幕截图,以便通过4个简单步骤轻松完成。
答案 2 :(得分:32)
string str = Properties.Settings.Default.myConnectionString;
答案 3 :(得分:28)
同时检查您的参考文件中是否包含System.Configuration
dll。没有它,您将无法访问System.Configuration命名空间中的ConfigurationManager
类。
答案 4 :(得分:20)
首先在您的信息页中添加System.Configuration
的引用。
using System.Configuration;
然后根据您的 app.config 获取连接字符串,如下所示。
string conStr = ConfigurationManager.ConnectionStrings["Test"].ToString();
现在就是你手中的连接字符串,你可以使用它。
答案 5 :(得分:13)
//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 :(得分:6)
试试这个
string abc = ConfigurationManager.ConnectionStrings["CharityManagement"].ConnectionString;
答案 7 :(得分: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
然后当你想使用连接时,请以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()
就是这样。您将连接到数据库并可以执行操作。
这是针对vb.net的,但逻辑是一样的。
答案 8 :(得分:3)
你试过了吗?
var connection = new ConnectionFactory().GetConnection(
ConfigurationManager.ConnectionStrings["Test"]
.ConnectionString, DataBaseProvider);
答案 9 :(得分:3)
我有同样的问题。我的解决方案是由两个项目构建的。一个Class library
和一个引用类库项目的网站。问题是我试图访问App.config
项目中的Class library
,但系统正在网站Web.config
中搜索。我把连接字符串放在Web.config
里面......问题解决了!
主要原因是,尽管在另一个程序集中使用了ConfigurationManager
,但它正在runnig项目中进行搜索。
答案 10 :(得分:3)
您可以使用此方法获取连接字符串
using System;
using System.Configuration;
private string GetConnectionString()
{
return ConfigurationManager.ConnectionStrings["MyContext"].ConnectionString;
}
答案 11 :(得分:2)
string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;
答案 12 :(得分:1)
您可以使用以下代码行获取连接字符串 -
using System; using System.Configuration;
var connectionString=ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
答案 13 :(得分:1)
似乎问题不在于引用,您将connectionstring作为null,因此请确保您已将值添加到配置文件中,正在运行的项目意味着首先启动/执行的主程序/库。
答案 14 :(得分:1)
此问题中的OP可能正在尝试在dll中使用App.Config。
在这种情况下,代码实际上是试图访问可执行文件的App.Config而不是dll。由于找不到名称,因此返回Null,因此显示异常。
以下帖子可能会有所帮助: ConnectionString from app.config of a DLL is null
答案 15 :(得分:1)
这对我有用:
string connection = System.Configuration.ConfigurationManager.ConnectionStrings["Test"].ConnectionString;
输出:
数据源=。;初始目录= OmidPayamak; IntegratedSecurity = True&#34;
答案 16 :(得分:1)
首先,您必须向项目添加System.Configuration
引用,然后使用下面的代码来获取连接字符串。
_connectionString = ConfigurationManager.ConnectionStrings["MYSQLConnection"].ConnectionString.ToString();
答案 17 :(得分:1)
为了从 app.cfg(在 Windows 服务应用程序中)读取连接字符串,以下代码对我有用
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connectionStringsSection.ConnectionStrings["CONNECTIONSTR"].ConnectionString = @"New Connection String";
答案 18 :(得分:0)
我引用了System.Configuration
库,我有同样的错误。
调试文件没有他们的app.config,手动创建此文件。
错误是,我解决了这个复制调试文件夹中的文件“appname.exe.config”。 IDE没有创建文件。
答案 19 :(得分:0)
我通过使用索引来读取字符串并逐个检查来解决了这个问题。使用该名称阅读仍然会出现同样的错误 我在开发C#窗口应用程序时遇到问题,我的asp.net应用程序中没有问题。设置中必须有一些不正确的东西。
答案 20 :(得分:0)
上面的答案没有详细说明从哪里 connectionStrings 索引中的值来自。
如上所述,要获取连接字符串,您可以说:
string conStr = ConfigurationManager.ConnectionStrings["XXX"].ToString();
要使用正确的 XXX
值,请转到您的主项目 web.config
文件并查找以下代码:
<connectionStrings>
<add name="Authentication" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=Authentication;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Authentication.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
它说 name=
的地方,这些引号内的文本是您在上面的代码中使用的 XXX
的值。在我上面的例子中,它恰好是 Authentication
答案 21 :(得分:0)
在 UserControl 的构造函数中放置 ConfigurationManager.ConnectionStrings
时遇到了这个问题,这里的任何解决方案都不适合我。
经过一些研究,似乎 ConfigurationManager.ConnectionStrings
在尝试从 DesignTime
访问时为空。
从 this post 开始,我想出了以下代码来检测 DesignTime
作为问题的解决方法:
public class MyUserControl : UserControl
{
....
public MyUserControl ()
{
InitializeComponent();
bool designMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
if (!designMode)
{
this.connectionString =
ConfigurationManager.ConnectionStrings["xxx"].ConnectionString;
}
}
}