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         }
    文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家留言交流,转载请注明出处。
  • 相关阅读:
    45 岁,还写代码吗?
    给你 8 个接私活的网站
    一文回顾 Java 入门知识(下)
    5 种前途迷茫的编程语言
    JVM 内存的结构模型、堆与堆栈原理、对象在内存中的结构
    mysql 索引是否能提高UPDATE,DELETE,INSERT 处理速度
    【诈尸】【游戏】多人联机游戏推荐
    250.统计同值子树
    366. 寻找二叉树的叶子节点
    156.上下翻转二叉树
  • 原文地址:https://www.cnblogs.com/yhlx125/p/2815690.html
Copyright © 2011-2022 走看看