zoukankan      html  css  js  c++  java
  • C# ini文件读取、软件初始化和配置

    开发过程中遇到这样的问题,设计的程序需要按照如下的流程运行:

    1.程序启动,From_Load中读取配置文件,初始化全局连接字符串,系统运行。

    2.启动配置窗体,读取配置信息,显示;修改,保存,(系统重新加载运行)

    3.重启

    解决方法,通过ini配置文件存取配置信息,主要是数据库的连接字符串;读取ini文件,运行程序;

    启动配置,读取ini中的配置信息并显示。

    在界面中修改,保存配置信息。

    C#读取ini文件的类,运用了系统kernel32内核的API。

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.IO;
     6 namespace KJTransplant
     7 {
     8     class GFileINI
     9     {
    10         // 声明INI文件的写操作函数 WritePrivateProfileString()
    11         [System.Runtime.InteropServices.DllImport("kernel32")]
    12         private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
    13 
    14         // 声明INI文件的读操作函数 GetPrivateProfileString()
    15         [System.Runtime.InteropServices.DllImport("kernel32")]
    16         private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath);
    17         private string sPath = null;
    18 
    19         public string Path
    20         {
    21             get { return sPath; }
    22             set { sPath = value; }
    23         }
    24         public GFileINI()
    25         {
    26         }
    27         public GFileINI(string path)
    28         {
    29             this.sPath = path;
    30         }
    31         public void Write(string section, string key, string value)
    32         {
    33             // section=配置节,key=键名,value=键值,path=路径
    34             WritePrivateProfileString(section, key, value, sPath);
    35         }
    36         public string ReadValue(string section, string key)
    37         {
    38             // 每次从ini中读取多少字节
    39             System.Text.StringBuilder temp = new System.Text.StringBuilder(255);
    40             // section=配置节,key=键名,temp=上面,path=路径
    41             GetPrivateProfileString(section, key, "", temp, 255, sPath);
    42             return temp.ToString();
    43         }
    44         /// <summary> 
    45         /// 验证文件是否存在 
    46        /// </summary> 
    47         /// <returns>布尔值</returns> 
    48         public bool ExistINIFile()
    49         {
    50             return File.Exists(sPath);
    51         }
    52 
    53 
    54     }
    55 }

    系统实现的部分代码:

    初始化系统参数

     1 /// <summary>
     2         /// 初始化系统参数
     3         /// </summary>
     4         private void InitialSysPrams()
     5         {
     6             strConn = ini.ReadValue("ShareDir", "Dir");
     7             fileSystemWatcher1.Path = strConn;
     8             string strDataSource = ini.ReadValue("Setting", "DataSource");
     9             string strUserId = ini.ReadValue("Setting", "UserId");
    10             string strPassWord = ini.ReadValue("Setting", "PassWord");
    11             string strConnOrcl = string.Format("Data Source ={0}; User Id ={1}; Password ={2}; Integrated Security = no", strDataSource, strUserId, strPassWord);
    12             strDestinyConn = strConnOrcl;
    13             OracleHelper.connectionString = strDestinyConn;//启动初始化数据库连接字符串
    14         }

    读取参数显示

    1  private void ReadParms()
    2         {
    3            ucOracleConn1.SDataSource =ini.ReadValue("Setting", "DataSource" );
    4            ucOracleConn1.SUserId= ini.ReadValue("Setting", "UserId" );
    5            ucOracleConn1.SPassWord =ini.ReadValue("Setting", "PassWord");
    6            ucOracleConn1.Reset();
    7         }

    保存参数

     1 /// <summary>
     2         /// 保存参数
     3         /// </summary>
     4         private void SaveParms()
     5         {
     6             ini.Write("Setting", "DataSource", ucOracleConn1.SDataSource);
     7             ini.Write("Setting", "UserId",ucOracleConn1.SUserId );
     8             ini.Write("Setting", "PassWord", ucOracleConn1.SPassWord);         
     9             //FileStream fs = new FileStream(configFileName, FileMode.Open, FileAccess.Write);
    10             //using (StreamWriter sr = new StreamWriter(fs, Encoding.Default))
    11             //{
    12             //    String line;
    13             //    // Read and display lines from the file until the end of the file is reached.
    14             //    sr.WriteLine("[DataSource] " + dic["[DataSource]"]);
    15             //    sr.WriteLine("[UserId] " + dic["[UserId]"]);
    16             //    sr.WriteLine("[PassWord] " + dic["[PassWord]"]);
    17 
    18             //}
    19             //fs.Close();
    20         }
    文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家留言交流,转载请注明出处。
  • 相关阅读:
    springboot的@EnableAutoConfiguration起作用的原理
    springboot加载bean过程探索
    dubbo源码阅读笔记-如何引用远程服务,变成invoker
    HashMap如何实现序列化
    如果处理缓存失效从数据库加载数据
    redis设计原则
    redis相关运维命令
    spring的compentScan注解扫描类机制
    全文检索技术
    前端设计网站
  • 原文地址:https://www.cnblogs.com/yhlx125/p/2815690.html
Copyright © 2011-2022 走看看