Introduction
We can use INI file to auto generate the database connection string.
Background
It can be used in Webform and winForm.
Using the code
A brief description of how to use the article or code. The class names, the methods and properties, any tricks or tips.
Blocks of code should be set as style "Formatted" like this:
using System; using System.Resources; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text; using System.IO; using System.Data; namespace www.treaple.com { public class DBBase { public string hostName = null; public string baseName = null; public string loginName = null; public string passWord = null; public DBBase() { } } public class DBConnectioin : DBBase { private INI ini; public static string conStr = null; public DBConnectioin() { ini = new INI(); } private void Read() { ini.GetPara(); this.hostName = ini.hostName; this.baseName = ini.baseName; this.loginName = ini.loginName; this.passWord = ini.passWord; } public void Write() { ini.hostName = this.hostName ; ini.baseName = this.baseName ; ini.loginName= this.loginName ; ini.passWord = this.passWord; ini.SetPara(); } public void GetConString() { this.Read(); conStr = "workstation id=" + this.hostName + ";data source=" + this.hostName + ";initial catalog=" + this.baseName + ";user id=" + this.loginName + ";password=" + this.passWord; } } public class INI : DBBase { protected string path = null; protected string fileName = "Config.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); public INI() { this.path = Directory.GetCurrentDirectory(); } private bool Write(string section, string key, string value) { try { WritePrivateProfileString(section, key, value, this.path + "\\" + this.fileName); return true; } catch { return false; } } private string Read(string section, string key) { StringBuilder temp = new StringBuilder(255); int i = GetPrivateProfileString(section, key, "", temp, 255, this.path + "\\" + this.fileName); return temp.ToString(); } public void GetPara() { this.hostName = Read("Info", "HostName"); this.baseName = Read("Info", "baseName"); this.loginName = Read("Info", "LoginName"); this.passWord = Read("Info", "PassWord"); } public void SetPara() { Write("Info", "HostName", this.hostName); Write("Info", "baseName", this.baseName); Write("Info", "LoginName", this.loginName); Write("Info", "PassWord", this.passWord); } } } using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace www.treaple.com { public partial class Form1 : Form { DBConnectioin dBConnectioin = new DBConnectioin(); public Form1() { InitializeComponent(); } private void btnSetStr_Click(object sender, EventArgs e) { dBConnectioin.hostName = txtHostName.Text.Trim(); dBConnectioin.baseName = txtBaseName.Text.Trim(); dBConnectioin.loginName = txtLoginName.Text.Trim(); dBConnectioin.passWord = txtPassWord.Text.Trim(); dBConnectioin.Write(); } private void btnGetStr_Click(object sender, EventArgs e) { dBConnectioin.GetConString(); txtConStr.Text = DBConnectioin.conStr; } private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { System.Diagnostics. Process.Start("http://www.treaple.com/Contact_Us.htm"); } } }
Source code:
http://www.treaple.com/bbs/thread-30-1-1.html
Deborah StoddardPosted May 6, 2015, 3:39 AM
Instead may I suggest you to use this C# class library for INI files, in will enable you to achieve the same (both reading and writing) but in a more .NET friendlier manner.
Also you should note that with those methods you are actually accessing an INI file separately on each reading and writing, while with the above suggested library you would access a file only once for reading (loading) and only once for writing (saving).
Mahesh ChandPosted Jun 17, 2008, 9:57 PM
Hello,
You may want to publish this type of contents as an article or a blog.