C#/c#
[ c# ] ini 파일 읽어오는 법 2가지
code094
2022. 12. 22. 19:43
리눅스 서비스에서 ini 파일 읽을 때
var parser = new FileIniDataParser();
IniData data = parser.ReadFile("./setting.ini");
string host = data["DataBase"]["host"];
string user = data["DataBase"]["user "];
string password = data["DataBase"]["password"];
string dbname = data["DataBase"]["Database_name"];
string port = data["DataBase"]["port"];
sqlConnector = "Server=" + host + ";User ID=" + user + ";Password=" + password + ";Database=" + dbname + ";Port=" + port;
윈도우에 클라이언트에서 ini 파일 읽을 때
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
readonly string iniPath;
public IniReaderHelper() // 생성자
{
string AppDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\settings";
if (Directory.Exists(AppDataFolder))
{
System.IO.Directory.CreateDirectory(AppDataFolder);
}
var Path = AppDataFolder + "\\setting.ini";
iniPath = Path;
}
public string GetDBconnectionString()
{
Retry:
StringBuilder ip = new StringBuilder();
StringBuilder user = new StringBuilder();
StringBuilder password = new StringBuilder();
StringBuilder port = new StringBuilder();
StringBuilder name = new StringBuilder();
GetPrivateProfileString("DataBase", "ip", "(NONE)", ip, 32, iniPath);
GetPrivateProfileString("DataBase", "user", "(NONE)", user, 32, iniPath);
GetPrivateProfileString("DataBase", "password", "(NONE)", password, 32, iniPath);
GetPrivateProfileString("DataBase", "port", "(NONE)", port, 32, iniPath);
GetPrivateProfileString("DataBase", "name", "(NONE)", name, 32, iniPath);
if (ip.ToString() == "(NONE)" || user.ToString() == "(NONE)" || password.ToString() == "(NONE)" || port.ToString() =="(NONE)" || name.ToString() =="(NONE)")
{
if (SetConnectionString()) // 데이터 없으면 기본값으로 설정
goto Retry;
else
{
App.Current.MainWindow.Close();
return "cancel";
}
}
return "Server=" + ip + ";User=" + user + ";Password=" + password + ";Database=" + name + ";Port=" + port;
}
필요한 곳에서 string DBString = GetDBconnectionString();