从App setings app.config文件调用连接字符串到C#代码

时间:2012-05-24 05:10:01

标签: c# xml app-config

我正在尝试将app.config文件中的连接字符串调用到C#代码。这是app.config代码:

<?xml version="1.0" encoding="utf-8" ?>
  <configuration>
 <appSettings>

<add key="connectstring" value="Data Source=server111;Initial Catalog=database1;        Integrated Security=False;Persist Security Info=False; User ID=username;Password=password;Encrypt=True; TrustServerCertificate=True; MultipleActiveResultSets=True"/>

 </appSettings>
</configuration>

这是C#代码:

  private SqlConnection connStudent;  
  connStudent = new SqlConnection(ConfigurationManager.AppSettings["connectstring"].ToString());
  connStudent.Open();

代码应该是正确的,但我得到一个Null引用异常,并且在调试程序时,connStudent始终为null并且不获取连接字符串。 错误是“对象引用未设置为对象的实例”。

2 个答案:

答案 0 :(得分:3)

如果您使用的是.NET 2.0或更高版本请使用以下

<connectionStrings>
<add name="myConnectionString" connectionString="server=localhost;database=myDb;uid=myUser;password=myPass;" />
</connectionStrings>

然后

string connStr = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;

答案 1 :(得分:0)

你的代码没问题。检查以确保您的copy to output directory媒体资源设置为copy alwayscopy if newer。如果仍然无效,请尝试删除临时obj文件。

以下测试代码工作正常。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="connectstring" value="Data Source=server111;Initial Catalog=database1;        Integrated Security=False;Persist Security Info=False; User ID=username;Password=password;Encrypt=True; TrustServerCertificate=True; MultipleActiveResultSets=True"/>
  </appSettings>
</configuration>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                SqlConnection connStudent;
                connStudent = new SqlConnection(ConfigurationManager.AppSettings["connectstring"].ToString());
                //connStudent.Open();
                //connStudent.Close();
                Console.WriteLine("ok");
            }
            catch
            {
                Console.WriteLine("error");
            }
        }

    }
}