从配置管理器中提取连接字符串

时间:2012-05-09 19:41:30

标签: c# database connection-string

我有问题。我正在尝试通过

提取连接字符串
sqlConnStr = new qlConnection(ConfigurationManager.ConnectionStrings["PlacementConnectionString"].ConnectionString);

但它仍然失败:

  

对象引用未设置为对象的实例

我检查调试器,这是connectionStr

的值
{Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Placement.accdb}

我已经通过VS2012的DataSet向导导入了我的数据库,所以我做错了什么?

PS:我已多次测试连接。

<connectionStrings>
   <add name="_201103578_P09.Properties.Settings.PlacementConnectionString" 
        connectionString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource=|DataDirectory|\Placement.accdb"
        providerName="System.Data.OleDb" />
</connectionStrings>

亲切的问候

Markus

[UPDATE]

我改变了

sqlAdapter = new SqlDataAdapter();

try
{
    sqlConnStr = new SqlConnection(ConfigurationManager.ConnectionStrings["PlacementConnectionString"].ConnectionString);
}

sqlAdapter = new SqlDataAdapter();
string s = ConfigurationManager.ConnectionStrings[1].ConnectionString;

try
{
    sqlConnStr = new SqlConnection(s);
}

我检查了s,值是

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\Placement.accdb

现在抛出错误

  

System.ArgumentException:不支持关键字:'provider'

智慧结束;

=============================================== ==================

对每个人 - 谢谢你(我忘了)在使用Access数据库时你必须使用OleDbCommand而不是SqlCommand。谢谢你现在一切正常! - 马库斯刚刚编辑

2 个答案:

答案 0 :(得分:1)

关闭你发布的代码,我能看到的唯一解释是你得到的空引用与配置管理器没有通过你传递它的字符串得到任何东西。

如果

ConfigurationManager.ConnectionStrings["PlacementConnectionString"]

不会返回任何内容 - 调用

.ConnectionString

将因您的错误而失败。你能验证一下吗

  

“PlacementConnectionString”

是连接的正确名称吗?

答案 1 :(得分:1)

您的连接字符串名称不正确

<connectionStrings>
 <add name="_201103578_P09.Properties.Settings.PlacementConnectionString" 
    connectionString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource=|DataDirectory|\Placement.accdb"
    providerName="System.Data.OleDb" />

相反它应该是

<connectionStrings>
<add name="PlacementConnectionString" 
    connectionString="Provider=Microsoft.ACE.OLEDB.12.0;DataSource=|DataDirectory|\Placement.accdb"
    providerName="System.Data.OleDb" />

或者在您的代码中,您应该寻找

ConfigurationManager.ConnectionStrings["_201103578_P09.Properties.Settings.PlacementConnectionString"].ConnectionString