码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2016-08-26 15:14:58      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

操作数据类

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

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

 

一般封装成三个类:

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

 

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

标签:

原文地址:http://www.cnblogs.com/H2921306656/p/5810062.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!