ADO.Net(三)——数据库操作类

2018-06-22 07:09:27来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

操作数据类

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

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

 

一般封装成三个类:

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

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Linux下尝鲜IDE Rider .NET又一开发利器

下一篇:不需要sql进行计算数据的平均值、最大值、最小值、和