• 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         }
    文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家留言交流,转载请注明出处。
  • 相关阅读:
    Intellij IDEA 使用spring-boot-devtools无效解决办法一
    使用docker安装myql/redis等软件
    mybatis generator插件系列--分页插件
    mybatis generator插件系列--lombok插件 (减少百分之九十bean代码)
    linux设置端口转发(一键设置)
    redis教程(The little redis book中文版)
    Redis 5种数据结构及其使用场景举例--STRING
    String中hashCode方法的线程安全
    java ShutdownHook介绍与使用
    ACM 模板库
  • 原文地址:https://www.cnblogs.com/yhlx125/p/2815690.html
Copyright © 2020-2023  润新知