• 【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);
                }
            }
        }
  • 相关阅读:
    git删除远程tag
    date的getTime问题
    EasyExcel读取excel文件反射成实体后全为NULL
    springboot回滚部分异常
    Java8 LocalDate、Date、LocalDateTime、时间戳的转换
    mysql未查到行,返回一条默认结果
    Maven No archetype found in remote catalog. Defaulting to internal catalog.
    HashMap相关资料
    HibernateHql
    用户名登录
  • 原文地址:https://www.cnblogs.com/hanqi0216/p/6751874.html
Copyright © 2020-2023  润新知