首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在windows窗体应用程序中处理连接字符串的最佳方法是什么?

在windows窗体应用程序中处理连接字符串的最佳方法是什么?
EN

Stack Overflow用户
提问于 2013-03-25 08:19:51
回答 3查看 5.6K关注 0票数 6

我的C#应用程序使用DataSetTableAdapters。它们是从VS2008 GUI工具中生成的。

示例:

右键单击项目->添加新项目-> DataSet

此方法自动将连接字符串添加到app.config中。

但是对于连接字符串来说,这是一种硬编码方法。我想以一种简单的方式更改连接字符串。但是,当我使用数据集时,连接字符串将从应用程序属性中获取。对这种情况有什么解决办法吗?

这是我在Settings.Designer.cs文件中的连接字符串存储

代码语言:javascript
复制
    namespace WindowsFormsApplication2.Properties {


    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {

        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

        public static Settings Default {
            get {
                return defaultInstance;
            }
        }

        [global::System.Configuration.ApplicationScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
        [global::System.Configuration.DefaultSettingValueAttribute("Data Source=SLCERT\\SQLEMK;Initial Catalog=TestDataBase;Integrated Security=True")]
        public string TestDataBaseConnectionString {
            get {
                return ((string)(this["TestDataBaseConnectionString"])); // this is the connection string get from the dataset's
            }
        }
    }
}

app.config包含

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="WindowsFormsApplication2.Properties.Settings.TestDataBaseConnectionString"
            connectionString="Data Source=SLCERT\SQLEMK;Initial Catalog=TestDataBase;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>
EN

回答 3

Stack Overflow用户

发布于 2013-03-25 08:24:35

我相信您会问这个问题,这样您就不必在本地测试和生产/测试服务器之间手动更改。

你可能想看看How to: Transform Web.config When Deploying a Web Application Project

它是关于web.config而不是app.config的,但它是相同的想法。

ps。只适用于VS 2010及以上

票数 6
EN

Stack Overflow用户

发布于 2013-03-25 08:29:55

除了JP提供的进行配置转换的建议之外,您还可以做一些其他的事情,因为.NET 4.0只支持(本机)。您可以将任意数量的连接字符串添加到配置文件的<connectionStrings/>部分,因此添加"DebugConnectionString“和"ReleaseConnectionString”或类似的。

现在,为了在每次更改环境时使用这些参数而不进行干预,您可以使用跟踪常量。假设在Visual中使用DEBUG常量集进行本地编译,并且在部署发行版时它不存在,那么您可以执行以下操作:

代码语言:javascript
复制
#if DEBUG 
    return ConfigurationManager.ConnectionStrings["DebugConnectionString"];
#else
    return ConfigurationManager.ConnectionStrings["ReleaseConnectionString"];
#endif
票数 4
EN

Stack Overflow用户

发布于 2013-03-25 08:34:05

在app.config中

代码语言:javascript
复制
<configuration>
<configSections>
</configSections>
<connectionStrings>
    <add name="DBCS" connectionString="Data Source=|DataDirectory|\Database.sdf;password=Password" 
        providerName="Microsoft.SqlServerCe.Client.3.5" /> 
</connectionStrings>

像这样访问它

代码语言:javascript
复制
static string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString.ToString();

包括

代码语言:javascript
复制
System.Configuration;

命名空间

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15610374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档