简体   繁体   English

如何从Config文件中读取连接字符串?

[英]How to read Connection String from a Config file?

I wanted to develop an App which should read Connectionstring from all the config files present inside a Folder(including Subfolders). 我想开发一个应该从文件夹(包括子文件夹)中存在的所有配置文件中读取Connectionstring的应用程序。 I have developped win form App for this. 我为此开发了win form App。

 private void btnConnString_Click(object sender, EventArgs e)
 {
     var files = Directory.GetFiles(
         this.txtPath.Text.Trim(), 
         "*.config", 
         SearchOption.AllDirectories);
     foreach (string filepath in files)
     {
         string fileName;
         fileName = Path.GetFileName(filepath);
     } 
 }

Now I have to read connection string. 现在我必须读取连接字符串。 How can I do? 我能怎么做?

You should try this approach: 你应该尝试这种方法:

ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = fileName;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
string connString =  config.ConnectionStrings.ConnectionStrings["ConnectionName"];

Hope Helps! 希望有帮助!

 System.Configuration.Configuration rootWebConfig =
            System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/MyWebSiteRoot");
        System.Configuration.ConnectionStringSettings connString;
        if (rootWebConfig.ConnectionStrings.ConnectionStrings.Count > 0)
        {
            connString =
                rootWebConfig.ConnectionStrings.ConnectionStrings["NorthwindConnectionString"];
            if (connString != null)
                Console.WriteLine("Northwind connection string = \"{0}\"",
                    connString.ConnectionString);
            else
                Console.WriteLine("No Northwind connection string");
        }
string fileName;
fileName = Path.GetFileName(filepath);


MessageBox.Show(filepath);

ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = fileName;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);

System.Configuration.ConnectionStringSettings connString = config.ConnectionStrings.ConnectionStrings["ConnectionString"];

if(connString!= null)
 {
   MessageBox.Show(connString.ConnectionString);
 }
else
   MessageBox.Show("No ConnectionString");

i have added this there is an entry in my connection strin still it is always taking null value 我添加了这个在我的连接中有一个条目strin仍然总是采用null值

class AppConfigurationReader
    {
        public List<string> key1;
        public List<string> key2;
        public int ConnectionStringsFound;

        public int GetTotalConnectionStringsFound()
        {
            ConnectionStringsFound = key1.Count();
            return (ConnectionStringsFound);
        }

        public AppConfigurationReader()
        {
            key1= new List<string>();
            key12 = new List<string>();

            ConnectionStringsFound = 0;
        }
        public void getAppConfigconnectionStrings(string webConfigPath)
        {
            DataTable dtKeyValue = new DataTable();

            dtKeyValue.TableName = "app.config connectionString";
            dtKeyValue.Columns.Add("name");
            dtKeyValue.Columns.Add("connectionString");

            XmlTextReader reader = new XmlTextReader(webConfigPath);
            XmlDocument xdoc = new XmlDocument();
            xdoc.Load(reader);
            reader.Close();

            XmlElement root = xdoc.DocumentElement;

            XmlNodeList appSettings = xdoc.SelectNodes("/configuration/connectionStrings/add");

            foreach (XmlNode node in appSettings)
            {
                DataRow row = dtKeyValue.NewRow();
                String name = node.Attributes["name"].Value.ToString();
                String connectionString = node.Attributes["connectionString"].Value.ToString();

                //row["name"] = name;
                //row["connectionString"] = connectionString;
                //dtKeyValue.Rows.Add(row);

                if (String.Equals(name, "Mykey1") == true)
                {
                    key1.Add(connectionString);
                }
                else if (String.Equals(name, "Mykey2") == true)
                {
                    key2.Add(connectionString);
                }
            }

            //return dtKeyValue;
        }
}

//Try this it worked for me //试试这个对我有用

ExeConfigurationFileMap Map = new ExeConfigurationFileMap();
Map.ExeConfigFilename = fileName;
Configuration configurationManager = ConfigurationManager.OpenMappedExeConfiguration(Map , ConfigurationUserLevel.None);
string connectionString =  configurationManager.ConnectionStrings.ConnectionStrings["YOUR CONNECTION NAME HERE"];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM