1、ini文件有自己的结构。由若干段落(SECTION)组成,每个段落包含若干个关键字(KEYWORD)、等号、关键字的值(VALUE).例如:
[CN1]
SERVER = ***
ID = ***
PW = ***
DATABASE = ***
2、C#命名空间中没有直接读写INI的类。但在"kernel32.dll"这个文件中有Win32的API函数--WritePrivateProfileString()和GetPrivateProfileString()
2.1 WritePrivateProfileString()函数,使用如下:
[DllImport( "kernel32" )]
private static extern long WritePrivateProfileString (string section ,string key , string val , string filePath ) ;
参数说明:
section:INI文件中的段落;
key:INI文件中的关键字;
val:INI文件中关键字的数值;
filePath:INI文件的完整的路径和名称
2.2 和GetPrivateProfileString()函数,使用如下:
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
参数说明:
section:INI文件中的段落名称;
key:INI文件中的关键字;
def:无法读取时候时候的缺省数值;
retVal:读取数值;
size:数值的大小;
filePath:INI文件的完整路径和名称。
代码参考:
1 public static string strIniFilePathName = Application.StartupPath + "\\DATABASE.INI"; 2 3 #region -----データベースサービスの情報をもらう----- 4 //引入dll文件,声明函数 5 [DllImport("kernel32")] 6 private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); 7 /// <summary> 8 /// INI ファイルからデータ値を読む 例えば:IniReadvalue("DataBase","SERVER",Application.StartupPath+"Temp1.ini"); 9 /// </summary> 10 /// <param name="strSectionName">Section名称</param> 11 /// <param name="strKeyName">鍵名</param> 12 /// <param name="strIniFilePathName">INIファイル名称</param> 13 /// <returns>鍵値</returns> 14 public static string GetStrIniReadvalue(string strSectionName, string strKeyName, string strIniFilePathName) 15 { 16 try 17 { 18 StringBuilder temp = new StringBuilder(255); 19 int i = GetPrivateProfileString(strSectionName, strKeyName, "", temp, 255, strIniFilePathName); 20 return temp.ToString(); 21 } 22 catch (Exception ex) 23 { 24 throw ex; 25 } 26 } 27 28 /// <summary> 29 /// 读取ini文件 30 /// </summary> 31 /// <param name="strSectionName">Section名称</param> 32 /// <param name="strdbServerIP">データベースサーバーのIPアドレス</param> 33 /// <param name="strdbUser">サーバーに接続するログイン名</param> 34 /// <param name="strdbPwd">サーバーに接続するパスワード</param> 35 /// <param name="strdbDataBase">データベース名前</param> 36 public static void GetIniReadString(string strSectionName, ref string strdbServerIP, ref string strdbUser, ref string strdbPwd, ref string strdbDataBase) 37 { 38 if (File.Exists(strIniFilePathName)) 39 { 40 strdbServerIP = GetStrIniReadvalue(strSectionName, "SERVER", strIniFilePathName); 41 strdbUser = GetStrIniReadvalue(strSectionName, "ID", strIniFilePathName); 42 strdbPwd = GetStrIniReadvalue(strSectionName, "PW", strIniFilePathName); 43 strdbDataBase = GetStrIniReadvalue(strSectionName, "DATABASE", strIniFilePathName); 44 } 45 } 46 47 #endregion