【问题标题】:How to use the ConfigurationManager.AppSettings如何使用 ConfigurationManager.AppSettings
【发布时间】:2011-10-27 13:09:14
【问题描述】:

我以前从未使用过“appSettings”。如何在 C# 中配置它以与 SqlConnection 一起使用,这就是我用于“ConnectionStrings”的方式

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

这就是我的“appSettings”

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

但它不起作用。

【问题讨论】:

  • 现在,我得到一个“不支持的关键字;'dsn'
  • 我将其更改为数据源,但现在出现网络错误。我正在尝试连接到 AS400,但数据源不适用于此。

标签: c# asp.net sql sqlconnection


【解决方案1】:

您的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 该值是连接字符串本身。 IMO,如果您使用带有web.config 的 ASP.NET,最好将connectionStrings 元素用于连接字符串,因为它是专门为它们设计的。 appSettings 元素主要用于您的应用程序独有的自定义应用程序设置,并且没有 .NET(或 ASP.NET)等效项,例如您客户的电子邮件地址列表,或您的猫的标语和版权信息博客。
【解决方案2】:

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

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

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

问题是您尝试将 con 设置为字符串,这是不正确的。 您必须将其传递给构造函数或设置 con.ConnectionString 属性。

【讨论】:

  • 好吧,我正在尝试使用 DSN 进行连接。我正在尝试连接到位于 AS400 上的 DB2 DB。我知道,如果我在 .aspx 页面中使用连接字符串,它可以工作,但每次我尝试在后面的代码中使用它时,我都会在尝试运行应用程序时收到 Keyword not supported 消息。
  • 那么你应该使用 OleDbConnection 代替:SqlConnection 仅用于 SQL Server 直接访问。
  • 查看this 文章。 OdbcConnection 或 OleDbConnection 将起作用:取决于您的驱动程序。
  • 我应该使用连接字符串还是应用程序设置??
  • ConnectionString 是正确的,但它也适用于 AppSettings。你需要做的是a)区分你是使用OleDB还是ODBC提供者并实例化适当的DBConnection,b)形成正确的连接字符串(使用我提到的文章)
【解决方案3】:

你应该使用 []

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

【讨论】:

    【解决方案4】:

    \如果您发布的内容正是您正在使用的内容,那么您的问题有点明显。现在假设在你的 web.config 中你有这样定义的连接字符串

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

    在你的代码中,你应该使用 name 属性中的值来引用你想要的连接字符串(你实际上可以定义几个连接到不同数据库的连接字符串),所以你会有

     con.ConnectionString = ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString;
    

    【讨论】:

    • 为什么这被否决了?它提供了与贾斯汀相同的解决方案,这是公认的答案......至少他们可以留下评论来说明为什么 kmt
    • 我对此表示反对,因为它假定您使用的是 web.config,而不是 app.config。 ConnectionStrings 仅适用于 web.config。
    • 要求澄清答案的评论就足够了,触发快乐的投票既不会教育任何人,也不会提高答案的质量
    • 你的答案很棒,欧比,我刚用过,但是这里有太多势利小人,如果他们不同意任何最小的想法,他们就会投反对票。他们就像足球(足球)的线人,会在任何可能的时候升旗,无论对错。谢谢!
    猜你喜欢
    • 2019-12-07
    • 2012-03-18
    • 2021-10-09
    • 2011-07-13
    • 2019-06-21
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    相关资源
    最近更新 更多