Start New Discussion within our Software Development Community

Introduction
We can use INI file to auto generate the database connection string.

Background
It can be used in Webform and winForm.

Collapse
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");
        }

    }
}