在app.config中更改连接字符串值

本文关键字:连接 字符串 app config | 更新日期: 2023-09-27 18:19:45

我正在尝试更改连接字符串值

connectionString="数据源=localhost;初始目录=跟踪器;持久安全信息=false;用户ID=sa;密码=p@ssw0rd"

从我的用户界面。有人能帮助更改windows应用程序中用户界面的设置吗?

在app.config中更改连接字符串值

从原始帖子的评论线程中,OP似乎需要枚举数据源,并允许用户选择一个(并可能存储该首选项)。假设是这样的话。。。

  • 如果可能的话,应该使用集成的Windows安全性来保护与数据库的实际连接。这是最好的做法。集成的安全性消除了在任何地方存储凭据的需要。

  • 如果目标是选择一个数据源,那么使用C#列出环境中的所有数据库并不困难。

  • 用户的首选项/选择应存储在app.config之外的其他位置。如果不涉及凭据,则注册表、独立存储或XML文件都是有效选项。

ASP.NET提供网站管理工具来查看和管理ASP.NET网站的配置设置。这些配置设置存储在一个名为web.config的xml文件中。

web.config是一个应用程序配置文件,用于定义ASP.NET应用程序的配置设置,如连接字符串、身份验证、授权等

该工具提供了一个易于使用的界面来编辑配置设置。但是,当您必须手动进行更改时,此工具可以很好地工作。有时,我们可能需要在运行时对web.config进行更改。例如:用户请求控制连接字符串、更改会话超时等。为此,ASP.NET提供Configuration API以编程方式操作web.config中的配置设置。API包含在System.ConfigurationSystem.web.Configuration命名空间中。事实上,网站管理工具内部使用相同的API来编辑配置设置。System.Web.Configuration命名空间中的WebConfigurationManager类用于创建Configuration对象。此对象用于读取和写入对web.config文件的更改。看见

另请参阅保护连接字符串

让我澄清一下,这不是你所问的,但通过阅读这篇文章,你将能够找到一些线索,并了解哪些是推荐的,哪些不是。

如果这是一个Windows应用程序,则不需要更改app.config文件来更改活动数据库连接。我已经在我的博客上写过了。

下面的用户使用C#更改连接字符串的方法:

public void SaveConnectionString(DbInfo dbinfo, string path,string appConfigFile)
    {
        try
        {
            string configFile = Path.Combine(path, appConfigFile);
            var doc = new XmlDocument();
            doc.Load(configFile);
            XmlNodeList endpoints = doc.GetElementsByTagName("connectionStrings");
            foreach (XmlNode item in endpoints)
            {
                if (item.HasChildNodes)
                {
                    foreach (var c in item.ChildNodes)
                    {
                        if (((XmlNode)c).NodeType == XmlNodeType.Element)
                        {

                            var adressAttribute = ((XmlNode)c).Attributes["name"];
                            if (adressAttribute.Value.Contains("YourConStrName"))
                            {
                                if (dbinfo.dbType == dataBaseType.Embedded)
                                {
                                    ((XmlNode)c).Attributes["connectionString"].Value = SetupConstants.DbEmbededConnectionString;
                                    ((XmlNode)c).Attributes["providerName"].Value = SetupConstants.DbEmbededConnectionProvider;
                                }
                                else if (dbinfo.dbType == dataBaseType.Microsoft_SQL_Server)
                                {
                                    if (dbinfo.sqlServerAuthType == SqlServerAuthenticationType.SQL_Server_Authentication)
                                    {
                                       // ((XmlNode)c).Attributes["connectionString"].Value = string.Format(SetupConstants.dbConnStringwithDb, dbinfo.databaseAdress, SetupConstants.SqlDbName, dbinfo.userId, dbinfo.password) + "MultipleActiveResultSets=true;";
                                        ((XmlNode)c).Attributes["connectionString"].Value = string.Format(SetupConstants.dbConnStringwithDb, dbinfo.databaseAdress, dbinfo.DatabaseName, dbinfo.userId, dbinfo.password) + "MultipleActiveResultSets=true;";
                                    }
                                    else if (dbinfo.sqlServerAuthType == SqlServerAuthenticationType.Windows_Authentication)
                                    {
                                        //((XmlNode)c).Attributes["connectionString"].Value = string.Format("Data Source={0};Initial Catalog={1};Integrated Security=True;MultipleActiveResultSets=true;", dbinfo.databaseAdress, SetupConstants.SqlDbName);
                                        ((XmlNode)c).Attributes["connectionString"].Value = string.Format("Data Source={0};Initial Catalog={1};Integrated Security=True;MultipleActiveResultSets=true;", dbinfo.databaseAdress, dbinfo.DatabaseName);
                                    }
                                    ((XmlNode)c).Attributes["providerName"].Value = SetupConstants.DbSqlConnectionProvider;
                                }
                            }
                        }
                    }
                }
            }
            doc.Save(configFile);
            string exePath = Path.Combine(path, "EDC.Service.exe");
            InstallerHelper.EncryptConnectionString(true, exePath);
        }
        catch (Exception ex)
        {
            //TODO://log here exception
            Helper.WriteLog(ex.Message + "'n" + ex.StackTrace);
            throw;
        }
    }

添加以下类别DBinfo

public class DbInfo
{
    public DataBaseType dbType { get; set; }
    public SqlServerAuthenticationType sqlServerAuthType { get; set; }
    public string ConnectionString { get; set; }
    public string databaseAdress { get; set; }
    public string userId { get; set; }
    public string password { get; set; }
    public string Port { get; set; }
    public string DatabaseName { get; set; }
}
public enum DataBaseType
{
    Unknown = 0,
    Embedded = 1,
    Microsoft_SQL_Server =2,
}
public enum SqlServerAuthenticationType
{
    Windows_Authentication = 0 ,
    SQL_Server_Authentication =1
}