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 }
作者:太一吾鱼水
文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。
欢迎大家留言交流,转载请注明出处。
分类:
编程开发集合 / C#开发
标签:
ini
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2011-12-13 .Net环境下COM互操作
2011-12-13 DataGridView为新增行中DataGridViewComboBoxCell添加不同的数据绑定!