zoukankan      html  css  js  c++  java
  • 【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);
                }
            }
        }
  • 相关阅读:
    【POJ 1958】 Strange Towers of Hanoi
    【HNOI 2003】 激光炸弹
    【POJ 3263】 Tallest Cow
    【POJ 2689】 Prime Distance
    【POJ 2777】 Count Color
    【POJ 1995】 Raising Modulo Numbers
    【POJ 1845】 Sumdiv
    6月16日省中集训题解
    【TJOI 2018】数学计算
    【POJ 1275】 Cashier Employment
  • 原文地址:https://www.cnblogs.com/hanqi0216/p/6751874.html
Copyright © 2011-2022 走看看