【2017-4-21】ADO.NET 数据库操作类

界面层:
业务逻辑层:
数据访问层:

实体类 最简单的封装
把数据库的表名变成类的类名
把数据库的每一个列,变为实体类中的成员变量和属性
列名与属性名一致

数据访问类
将某个表的数据库操作写成一个一个方法,放入到此类中
供外部调用

1、实体类 根据数据库中的表来做

比如Nation表 就建一个Nation类

表名=类名;     封装的字段=表里面的属性

封装快捷键:Ctrl + R + E + Enter + Enter

例:

public class Nation
    {
        private string code;

        public string Code
        {
            get { return code; }
            set { code = value; }
        }
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
    }

2、数据访问类 实现对表的各种操作 增删改查

需要引用命名空间: using System.Data.SqlClient;

查询所有数据返回的是一个集合,利用List<写存放数据的类型> 泛型集合(广泛利用于集合里面存对象)

例:

//主要实现对Nation表的各种操作(增删改查)
    public class NationDA
    {
        private SqlConnection _conn; //连接对象
        private SqlCommand _cmd; //命令对象
        private SqlDataReader _dr; //读取器对象

        //构造方法来初始化连接对象 命令对象
        public NationDA()
        {
            _conn = DBConnect.Conn; //对连接对象进行初始化
            _cmd = _conn.CreateCommand(); //对命令对象进行初始化
        }

        //添加数据的方法
        public bool Add(string code,string name)
        {
            _cmd.CommandText = "insert into Nation values(@code,@name)";
            _cmd.Parameters.AddWithValue("@code",code);
            _cmd.Parameters.AddWithValue("@name",name);

            _conn.Open();
            int n = _cmd.ExecuteNonQuery();
            _conn.Close();

            if (n > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        //查询所有数据的方法
        public List<Nation> Select()
        {
            _cmd.CommandText = "select * from Nation";
            _conn.Open();
            _dr = _cmd.ExecuteReader();
           
            //定义一个空的集合
            List<Nation> list = new List<Nation>();

            if (_dr.HasRows)
            {
                while (_dr.Read())
                {
                    //造一个Nation对象
                    Nation data = new Nation();
                    data.Code = _dr[0].ToString();
                    data.Name = _dr[1].ToString();

                    //扔到集合里面
                    list.Add(data);
                }
            }
            _conn.Close();
            return list;
        }
        //根据条件查询的方法
        public List<Nation> Select(string code)
        {
            _cmd.CommandText = "select * from Nation where Code=@code";
            _cmd.Parameters.Clear();
            _cmd.Parameters.AddWithValue("@code",code);
            _conn.Open();
            _dr = _cmd.ExecuteReader();


            //定义一个空的集合
            List<Nation> list = new List<Nation>();

            if (_dr.HasRows)
            {
                while (_dr.Read())
                {
                    //造一个Nation对象
                    Nation data = new Nation();
                    data.Code = _dr[0].ToString();
                    data.Name = _dr[1].ToString();

                    //扔到集合里面
                    list.Add(data);
                }
            }

            _conn.Close();
            return list;
        }

        //删除方法
        public bool Delete(string code)
        {
            _cmd.CommandText = "delete from Nation where Code=@code";
            _cmd.Parameters.Clear();
            _cmd.Parameters.AddWithValue("@code",code);

            _conn.Open();
            int n = _cmd.ExecuteNonQuery();
            _conn.Close();

            if (n > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        //修改方法
        public bool Update(string code,string name)
        {
            _cmd.CommandText = "update Nation set Name=@name where Code=@code";
            _cmd.Parameters.Clear();
            _cmd.Parameters.AddWithValue("@code",code);
            _cmd.Parameters.AddWithValue("@name",name);

            _conn.Open();
            int n = _cmd.ExecuteNonQuery();
            _conn.Close();

            if (n > 0)
            {
                return true;
            }
            else
            {
                return false;
            }

        }
        
        public string NationName(string code)
        {
            _cmd.CommandText = "select Name from Nation where Code=@code";
            _cmd.Parameters.AddWithValue("@code",code);

            _conn.Open();
            _dr = _cmd.ExecuteReader();


            if (_dr.HasRows)
            {
                _dr.Read();
                return _dr[0].ToString();
            }
            else
            {
                return "汉族";
            }

            _conn.Close();

        }
    }

3、数据连接类 提供数据连接对象

需要引用命名空间: using System.Data.SqlClient;

例:

public class DBConnect
    {
        private static string connstring = "server=.;database=mydb;user=sa;pwd=123";

        public static SqlConnection Conn      //利用静态的方法 通过某个对象或方法可以获取到连接对象
        {
            get {   //只读属性
                return new SqlConnection(connstring);
            }
        }
    }
原文地址:https://www.cnblogs.com/hanqi0216/p/6751874.html