如何在C#中使用app.config文件定义连接字符串

5

目前我在C#代码中手动定义我的连接字符串:

string ConnectionString = "Data Source=C;Initial Catalog=tickets;Integrated Security=True";
SqlConnection Conn = new SqlConnection(ConnectionString);
Conn.Open();

在我的项目中,我有一个app.config文件,我可以看到它有一个连接字符串。它看起来像这样:

<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
    <add name="ticketNotification.Properties.Settings.ticketsConnectionString"
        connectionString="Data Source=C;Initial Catalog=tickets;Integrated Security=True"
        providerName="System.Data.SqlClient" />
</connectionStrings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

我该如何根据与我的应用程序相同文件夹中的app.config文件定义连接字符串?
4个回答

10

使用这个方法修改您的应用程序

App.config文件

<?xml version="1.0"?>
  <configuration>
    <configSections>
    </configSections>
    <connectionStrings>
         <add name="ticketNotification.Properties.Settings.ticketsConnectionString"
              connectionString="Data Source=C;Initial Catalog=tickets;Integrated Security=True" providerName="System.Data.SqlClient" />
    </connectionStrings>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>
  </configuration>

以下是您的代码文件。 您需要使用System.Configuration命名空间。 System.Configuration命名空间包含ConfigurationManager类,该类用于从app.config / web.config文件中获取连接字符串。
由于这是一个Windows应用程序,因此您有一个App.config文件,在其中定义了连接字符串。 要获取在配置文件中定义的连接字符串,您需要在所需的事件处理程序内使用以下代码行。
请将此命名空间添加到您的代码文件(例如:Form1.cs)。
using System.Configuration;

在事件处理程序内添加/修改以下代码

  string myConnectionString = ConfigurationManager.ConnectionStrings["ticketNotification.Properties.Settings.ticketsConnectionString"].ConnectionString;

  using(SqlConnection Conn = new SqlConnection(myConnectionString))
  {
     Conn.Open();
     //Define the SQL query need to be executed as a string

    //Create your command object

    //Create Dataset,Dataadapter if required

    //add parameters to your command object - if required

   //Execute your command

   //Display success message
 }

7
从app.config文件中获取连接字符串,您需要使用位于System.Configuration命名空间中的ConfigurationManager类。
要按名称获取连接字符串并基于它创建一个连接,您可以使用以下代码:
SqlConnection conn = new SqlConnection(
      ConfigurationManager.ConnectionStrings[
         "ticketNotification.Properties.Settings.ticketsConnectionString"]
             .ConnectionString);

您可以在此处阅读更多相关信息(MSDN文档): http://msdn.microsoft.com/en-us/library/ms254494(v=vs.110).aspx

确保您的项目引用了System.Configuration,否则ConfigurationManager将无法在System.Configuration命名空间中使用。

谢谢。


在 .net 4.5 中不存在这个。 - PriceCheaperton
你打开了我发给你的MSDN链接吗?它是关于.NET 4.5的,清晰地展示了使用它的例子。你是在说MSDN是错误的吗?! - João Pinho
由于您在评论中帮助了我,我将接受您的答案。 - PriceCheaperton
很高兴能帮助同行! - João Pinho

5

首先通过右键单击“引用”并选择“添加引用”,添加对System.Configuration的引用。 接下来使用:

Using System.Configuration

// within the class here

ConfigurationManager.ConnectionStrings["ticketNotification.Properties.Settings.ticketsConnectionString"].ConnectionString;

显然,您需要在括号中输入连接字符串的名称。

我正在使用 .net 4.5,但 configurationManager 不存在! - PriceCheaperton
添加 Using System.Configuration 不起作用。 - PriceCheaperton
根据此文档http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager%28v=vs.110%29.aspx,您需要在顶部添加一个Using System.Configuration的引用。 - Andrew
@PriceCheaperton 添加对 System.configuration 程序集的引用。 - Kurubaran
你写的属性不存在。等一下,我给你展示。 - PriceCheaperton
显示剩余14条评论

0

你需要在你的项目中添加对System.Configuration的引用。然后,你就可以添加using System.Configuration语句,并通过名称获取连接字符串:

string connectionString = ConfigurationManager.ConnectionStrings[<name>].ConnectionString;

连接被称为“ticketsConnectionString”,这是我应该放的名称吗?使用尖括号吗? - PriceCheaperton
是的。它是一个字符串,所以要用引号括起来。删除尖括号。例如:"connectionStringName" - field_b
可能您的项目属性中有 .Net 4.5 客户端配置文件,这就是为什么无法添加 System.configuration 引用的原因。如果是这种情况,请更改项目属性设置以指向 .Net 4.5(不应该包含“Client”单词)。您可以转到项目设置--> 应用程序选项卡--> 查找目标框架(应该设置为 .Net Framework 4.5)。 - James
@James:我相信那个问题已经解决了。需要进行引用。 - field_b

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