15 tháng 3, 2016

Xây Dựng Hàm Dùng Chung Để Kết Nối CSDL C#

1. Xây Dựng Hàm Dùng Chung Để Kết Nối CSDL

- Vào C# Xây Dựng Class Dataprovider.cs
 public partial class Dataprovider : DataTable
    {
       // Khai báo tham số
        private static SqlConnection conn = null;
        private static string str_conn = "";
        private SqlCommand _cmd;
        // Hàm trả về đối tượng lệnh
        public SqlCommand Cmd
        {
            get { return _cmd; }
            set { _cmd = value; }
        }
        SqlDataAdapter _adapter;
        // Hàm dựng không đối số
        public Dataprovider()
        {
            config_xml.docfile_xml();
            str_conn = config_xml._str_conn;
            open_cnn();
        }
        // Hàm mở kết nối đến hệ thống
        public static bool open_cnn()
        {
            try
            {
                conn = new SqlConnection(str_conn);
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
                return false;
            }
        }
        // Hàm để lấy danh sách dữ liệu
        public DatatableLoad(SqlCommand cmd)
        {
            _cmd = cmd;
            try
            {
                open_cnn();
                _cmd.Connection = conn;
                _adapter = new SqlDataAdapter();
                _adapter.SelectCommand = _cmd;

                this.Clear();
                _adapter.Fill(this);
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }
        //Hàm đóng kết nối
        public void CloseConn()
        {
            conn.Close();
            SqlConnection.ClearPool(conn);
            conn.Dispose();

        }
        // Hàm thực thi câu lệnh insert, update
        public int ExecuteNoneQuery()
        {
            int kq = 0;
            SqlTransaction sqltr = null;
            try
            {
                sqltr = conn.BeginTransaction();//bat dau qua trinh quan ly transaction
                _cmd.Connection = conn;
                _cmd.Transaction = sqltr; //gan transaction vao doi tuong cmd

                _adapter = new SqlDataAdapter();
                _adapter.SelectCommand = _cmd;

                SqlCommandBuilder builder = new SqlCommandBuilder(_adapter);
                kq = _adapter.Update(this);

                sqltr.Commit();//cam ket thuc hien thanh cong
            }
            catch (Exception)
            {
                if (sqltr != null)
                    sqltr.Rollback();//quay lui
            }
            return kq;
        }
        //Hàm thực thi câu lệnh insert,update
        public int ExecuteNonQuery(SqlCommand cmd)
        {
            int kq = 0;
            SqlTransaction sqltr = null;
            try
            {
                sqltr = conn.BeginTransaction();
                cmd.Connection = conn;
                cmd.Transaction = sqltr;

                kq = cmd.ExecuteNonQuery();
                this.AcceptChanges();

                sqltr.Commit();
            }
            catch (Exception ex)
            {

                if (sqltr != null)
                    sqltr.Rollback();
                throw ex;
            }
            return kq;

        }
        // Hàm trả về biến
        public object ExecuteScalar(SqlCommand cmd)
        {
            object kq = null;
            SqlTransaction sqltr = null;
            try
            {
                sqltr = conn.BeginTransaction();//bat dau quan ly transaction
                cmd.Connection = conn;
                cmd.Transaction = sqltr;
                kq = cmd.ExecuteScalar();
                { }
                this.AcceptChanges();
                sqltr.Commit();
                if (kq == DBNull.Value)
                    kq = null;
            }
            catch (Exception ex)
            {
                if (sqltr != null)
                    sqltr.Rollback();
                throw ex;
            }
            return kq;
        }
        //ham chen vao csdl
        public bool insert(SqlCommand cmd)
        {
            if (conn == null || conn.State == ConnectionState.Closed)
            {
                conn = new SqlConnection();
                conn.Open();
            }

            _cmd = cmd;

            _cmd.Connection = conn;
            try
            {
                _cmd.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                return false;
                throw ex;
            }
            return true;

        }
        //ham update 
        public void update()
        {
            SqlCommandBuilder builder = new SqlCommandBuilder(_adapter);
            _adapter.Update(this);
        }
        //ham ket attach csdl 
        //HAM LAY MA ID ke tiep
        public SqlDataReader ExeCutereader(SqlCommand cmd)
        {
            SqlDataReader reader = null;
            if (conn == null || conn.State == ConnectionState.Closed)
            {
                conn = new SqlConnection();
                conn.Open();
            }

            _cmd = cmd;

            _cmd.Connection = conn;
            try
            {
                reader = _cmd.ExecuteReader();
            }
            catch (SqlException ex)
            {
                throw ex;
            }
            //reader.Close();
            //reader.Dispose();
            //_cmd.Dispose();
            return reader;
        }
    }

Đọc file cấu hinh xml trên C#

1. Đọc File Cấu Hình  Ứng Dụng Quản Lý Trên Nền Tảng C#

    + Bước 1: Tạo file cấu hình với tên config.xml như sau: 
     + Bước 2: Tạo Class config_xml để đọc file cấu hình
    public class config_xml
    {
        static public string servername = "";
        static public string database = "";
        static public string username = "";
        static public string password = "";
        static public string _str_conn = "";
        static public string _str_nodatabase = "";
        //Hàm ghi file cấu hình 3 đối số vào xml
        public static void ghifile_XML(string filecauhinh, string maychu, string csdl)
        {
            XmlTextWriter xmlwriter = new XmlTextWriter(filecauhinh, Encoding.UTF8);
            xmlwriter.Formatting = Formatting.Indented;//dinh dang thut dau dong

            //tao khai bao xml
            xmlwriter.WriteStartDocument();
            //tao node con cau hinh
            xmlwriter.WriteStartElement("config");

            xmlwriter.WriteStartElement("servername");
            //taogiatrichonode
            xmlwriter.WriteValue(maychu);
            xmlwriter.WriteEndElement();

            xmlwriter.WriteStartElement("database");
            xmlwriter.WriteValue(csdl);
            xmlwriter.WriteEndElement();

            xmlwriter.WriteStartElement("username");
            xmlwriter.WriteValue("");
            xmlwriter.WriteEndElement();

            xmlwriter.WriteStartElement("password");
            xmlwriter.WriteValue("");
            xmlwriter.WriteEndElement();

            xmlwriter.WriteEndElement();
            xmlwriter.Close();

        }
        //Hàm ghi file cấu hình 5 đối số vào xml
        public static void ghifile_XML(string filecauhinh, string maychu, string csdl, string username,                string password)
         {
            XmlTextWriter xmlwriter = new XmlTextWriter(filecauhinh, Encoding.UTF8);
            xmlwriter.Formatting = Formatting.Indented;

            xmlwriter.WriteStartDocument();
            xmlwriter.WriteStartElement("config");

            xmlwriter.WriteStartElement("servername");
            xmlwriter.WriteValue(maychu);
            xmlwriter.WriteEndElement();

            xmlwriter.WriteStartElement("database");
            xmlwriter.WriteValue(csdl);
            xmlwriter.WriteEndElement();

            xmlwriter.WriteStartElement("username");
            xmlwriter.WriteValue(username);
            xmlwriter.WriteEndElement();

            xmlwriter.WriteStartElement("password");
            xmlwriter.WriteValue(password);
            xmlwriter.WriteEndElement();

            xmlwriter.WriteEndElement();
            xmlwriter.Close();
        }
        // Hàm đọc file cấu hình xml đã ghi
        public static void docfile_xml()
        {

            XmlTextReader reader = new XmlTextReader("config.xml");
            reader.MoveToElement();
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element
                    && reader.Name == "config")
                {
                    while (reader.Read())
                    {
                        if (reader.NodeType == XmlNodeType.Element && reader.Name == "servername")
                        {
                            servername = reader.ReadString();
                            break;
                        }
                    }
                    while (reader.Read())
                    {
                        if (reader.NodeType == XmlNodeType.Element && reader.Name == "database")
                        {
                            database = reader.ReadString();
                            break;
                        }
                    }
                    while (reader.Read())
                    {
                        if (reader.NodeType == XmlNodeType.Element && reader.Name == "username")
                        {
                            username = reader.ReadString();
                            break;
                        }
                    }
                    while (reader.Read())
                    {
                        if (reader.NodeType == XmlNodeType.Element && reader.Name == "password")
                        {
                            password = reader.ReadString();
                            break;
                        }
                    }
                }
            }
            _str_conn = "Data Source=" + servername + ";Initial Catalog=" + database + ";User Id=" + username + ";Password=" + password + ";";

        }
    }

=> Source nguồn: File config xml