John Jiang

John Jiang

  • NA
  • 410
  • 209k

Auto create database connection string using INI by c#

Jun 15 2008 11:06 PM

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:

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

    }
}
Source code:
 http://www.treaple.com/bbs/thread-30-1-1.html

Answers (2)