zoukankan      html  css  js  c++  java
  • ADO.Net(三)——数据库操作类

    操作数据类

    避免代码重用、造对象太多、不能分工开发

    利用面向对象的方法,把数据访问的方式优化一下,利用封装类

     

    一般封装成三个类:

    1.数据连接类 提供数据连接对象

    需要引用命名空间: 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);
                }
            }
        }

    2.实体类 根据数据库中的表来做

    比如Nation表 就建一个Nation类

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

    例:

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

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

    需要引用命名空间: 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();
    
            }
        }
    View Code

    查看元素使用foreach遍历集合

    ※foreach里面不能加减任何一个元素,但可以修改数据

    例:

    Console.WriteLine("请输入代号:");
                string code = Console.ReadLine();
    
                List<Nation> list = da.Select(code);
    
                foreach (Nation data in list)
                {
                    Console.WriteLine(data.Code + "--" + data.Name);
                }
  • 相关阅读:
    sql 算法 : Nested Loop,Hash Join,Merge Join介绍
    Win10 上 安装Arduino 驱动 和 Arduino IDE 1.6.9
    Learning Python 012 函数式编程 2 返回函数 匿名函数 装饰器 偏函数
    Learning Python 012 函数式编程 1 高阶函数
    Learning Python 011 高级特性 2
    Learning Python 011 高级特性 1
    Learning Python 010 函数 2
    Learning Python 010 函数 1
    Learning Python 009 dict(字典)和 set
    Could not get lock /var/lib/dpkg/lock
  • 原文地址:https://www.cnblogs.com/H2921306656/p/5810062.html
Copyright © 2011-2022 走看看