如何使用ConfigurationManager.AppSettings

44

我以前从未使用过"appSettings"。在C#中如何配置它以便与SqlConnection一起使用?我目前用的是“ConnectionStrings”

SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

这就是我对"appSettings"所拥有的内容

SqlConnection con = new SqlConnection();
con = ConfigurationManager.AppSettings("ConnectionString");

但它没有起作用。


1
<appSettings> <add key="ConnectionString" value="DSN=PRODIGY;UID=JORGEM;PWD=JORGEM15;"/> </appSettings> - jorame
现在,我收到了一个“不支持的关键字; 'dsn'” 的错误信息。 - jorame
我把它改成了数据源,但现在我遇到了网络错误。我正在尝试连接到AS400,但我不知道数据源是否适用于它。 - jorame
4个回答

43

你的 web.config 文件应该具有以下结构:

<configuration>
    <connectionStrings>
        <add name="MyConnectionString" connectionString="..." />
    </connectionStrings>
</configuration>

接下来,使用连接字符串MyConnectionString创建一个SQL连接:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);

如果您更喜欢将连接字符串保存在配置文件的AppSettings部分中,则应如下所示:

<configuration>
    <appSettings>
        <add key="MyConnectionString" value="..." />
    </appSettings>
</configuration>

然后您的SqlConnection构造函数将如下所示:

SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["MyConnectionString"]);

在配置文件中的AppSettings中,值是什么? - Sahil
@Sahil 这个值就是连接字符串本身。在我看来,如果你正在使用带有 web.config 的 ASP.NET,则最好使用 connectionStrings 元素来处理连接字符串,因为它专门为此而设计。appSettings 元素主要用于自定义应用程序设置,这些设置对于您的应用程序是唯一的,并且没有 .NET(或ASP.NET)等效项,例如客户电子邮件地址列表,或者猫博客的标语和版权信息。 - jpaugh

24

ConfigurationManager.AppSettings 实际上是一个属性,因此您需要使用方括号。

总的来说,这是您需要做的:

SqlConnection con= new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
问题在于你试图将"con"设置为一个字符串,这是不正确的。 你必须通过将它传递给构造函数或设置con.ConnectionString属性来解决这个问题。

嗯,我正在尝试使用DSN进行连接。我正在尝试连接到位于AS400上的DB2数据库。我知道如果我在.aspx页面中使用connectionstring它可以工作,但每次我尝试在代码后台中使用它时,当尝试运行应用程序时我会收到“不支持的关键字”消息。 - jorame
那么你应该使用OleDbConnection:SqlConnection仅适用于SQL Server直接访问。 - Anton Vidishchev
查看 这篇 文章。 OdbcConnection 或 OleDbConnection 将会起作用:取决于你的驱动程序。 - Anton Vidishchev
我应该使用connectionstring还是appsetting? - jorame
1
ConnectionString 是正确的选择,但它也可以与 AppSettings 一起使用。你需要做的是 a) 区分你使用的是 OleDB 还是 ODBC 提供程序并实例化适当的 DBConnection,b) 形成正确的连接字符串(使用我提到的文章)。 - Anton Vidishchev
尝试使用以下代码: SqlConnection con = new SqlConnection("DSN=" + ConfigurationManager.AppSettings["ConnectionString"]); - kttii

0

你应该使用 []

var x = ConfigurationManager.AppSettings["APIKey"];

0

如果您发布的内容正是您正在使用的内容,那么您的问题就有点明显了。现在假设在您的web.config文件中,您已经定义了连接字符串,如下所示:

 <add name="SiteSqlServer" connectionString="Data Source=(local);Initial Catalog=some_db;User ID=sa;Password=uvx8Pytec" providerName="System.Data.SqlClient" />

在您的代码中,您应该使用名称属性中的值来引用您想要的连接字符串(实际上,您可以定义多个连接到不同数据库的连接字符串),因此您将拥有:
 con.ConnectionString = ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString;

3
为什么这个被踩了?它给出的解决方案与Justin的答案相同,而Justin的答案是被接受的……他们至少可以留下评论说明为什么。 - Obi
我要给这个点踩,因为它假设你在使用 web.config 而不是 app.config。 ConnectionStrings 只能在 web.config 中使用。 - J. Polfer
一个请求澄清答案的评论就足够了,过度使用负面评价并不能教育任何人,也无法提高答案的质量。 - Obi
1
你的回答很棒,Obi。我刚刚使用了它,但这里有太多势利小人,如果他们不同意最小的想法,就会对任何东西进行投票否决。他们就像足球(足球)边裁员,会在任何可能的时刻举旗示意,无论对错。谢谢! - Ricardo Olivo Poletti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接