博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ADO.NET 数据库操作类
阅读量:6820 次
发布时间:2019-06-26

本文共 4389 字,大约阅读时间需要 14 分钟。

操作数据类

 

 

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

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

 

一般封装成三个类:

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
Select() { _cmd.CommandText = "select * from Nation"; _conn.Open(); _dr = _cmd.ExecuteReader(); //定义一个空的集合 List
list = new List
(); 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
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
list = new List
(); 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(); } }

 

查看元素使用foreach遍历集合

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

 

例:

 

Console.WriteLine("请输入代号:");            string code = Console.ReadLine();            List
list = da.Select(code); foreach (Nation data in list) { Console.WriteLine(data.Code + "--" + data.Name); }

 

转载于:https://www.cnblogs.com/ShenG1/p/5790164.html

你可能感兴趣的文章