zoukankan      html  css  js  c++  java
  • 数据操作类:增删改查(三大类)

    一、数据连接类

    using System;

    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.SqlClient;

    namespace ConsoleApplication1
    {
    //提供数据连接对象
    public class dbconnect
    {
    //先定义一个静态的方法或属性
    private static string connstring = "server=.;database=mydb;user=sa;pwd=100867";//如果换了数据库或电脑就只改这个地方就好
    public static SqlConnection conn//属性名称
    {
    get//只读的一个属性
    {
    return new SqlConnection(connstring);//连接字符串
    }
    }

     

    二、实体类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApplication1
    {
    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; }
    }



    }
    }

    三、数据访问类(增删改查封装方法)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.SqlClient;

    namespace ConsoleApplication1
    {
    //主要实现对nation表的各种操作(增删改查)
    public class nationDA
    {
    private SqlConnection _conn;//连接对象
    private SqlCommand _cmd;//命令对象
    private SqlDataReader _dr;//读取器对象
    //构造方法来初始化连接对象 命令对象
    public nationDA()//构造方法 直接写类名
    {
    _conn = dbconnect.conn;//对连接对象进行初始化 里面的成员是静态的,直接用类名来调用
    _cmd = _conn.CreateCommand();//对命令对象进行初始化 上面已经连接了对象_conn,它里面有个createcommand方法,
    //初始化后就不用额外的赋值了
    }

    //封装添加数据的方法,必须是public,让外界来调用
    public bool add(string code,string name)//如果外界要调用需要参数
    {
    //添加数据 写SQL语句
    _cmd.CommandText = "insert into nation values(@code,@name)";
    _cmd.Parameters.Clear();
    _cmd.Parameters.AddWithValue("@code",code);
    _cmd.Parameters.AddWithValue("@name",name);
    _conn.Open();
    int n= _cmd.ExecuteNonQuery();

    if (n > 0)//判断一下n的值
    {
    return true;
    }
    else
    {
    return false;
    }
    _conn.Close();
    }

    //查询所有数据的方法
    public List<nation> select()//<>里面写存的集合类型,对象的类型,存一种对象.<nation>之前做的nation实体类
    {
    _cmd.CommandText = "select * from nation";
    _conn.Open();
    _dr= _cmd.ExecuteReader();

    //把查到的数据读出
    List<nation> list=new List<nation>();//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<nation> select(string code)//<>里面写存的集合类型,对象的类型,存一种对象.<nation>之前做的nation实体类
    {
    _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>();//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 updata(string code, string name)//参数是code 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.Clear();
    _cmd.Parameters.AddWithValue("@code",code);
    _conn.Open();
    _dr = _cmd.ExecuteReader();

    if (_dr.HasRows)
    {
    _dr.Read();
    return _dr[0].ToString();

    }
    else
    {
    return "汉族";
    }
    _conn.Close();
    }


    }
    }

    四、具体操作表,Program

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApplication1
    {
    class Program1
    {
    static void Main1(string[] args)
    {
    //具体怎么操作 让用户往nation表中添加数据
    //Console.WriteLine("请输入代号:");
    //string code = Console.ReadLine();
    //Console.WriteLine("请输入名称:");
    //string name = Console.ReadLine();
    ////调用nationDA里面的方法就先造一个对象
    //nationDA da = new nationDA();
    //if (da.add(code, name))
    //{
    // Console.WriteLine("添加成功!");
    //}
    //else
    //{
    // Console.WriteLine("添加失败!");
    //}

    //查询 先造一个对象
    nationDA da = new nationDA();
    //List<nation> list = da.select();
    ////使用foreach遍历集合中的元素 foreach里不能加减元素(不能加减一条数据)
    //foreach (nation data in list)
    //{
    // Console.WriteLine(data.Code + "__" + data.Name);
    //}

    //条件查询
    // Console.WriteLine("请输入代号:");
    // string code = Console.ReadLine();
    //List<nation> list= da.select(code);
    //foreach (nation data in list)
    //{

    // Console.WriteLine(data.Code+"__"+data.Name);

    //}

    //删除 删除都得提示 是否删除,得先查询到并显示出来,判断是否删除

    Console.WriteLine("请输入要删除的代号:");
    string code = Console.ReadLine();
    //是否删除 先显示(查询)
    List<nation> List = da.select(code);
    Console.WriteLine("这是您要删除的数据:");
    foreach (nation data in List)
    {
    Console.WriteLine(data.Code+"--"+data.Name);
    }
    Console.WriteLine("确认要删除这条数据吗?如果要删除请输入:1;如果不删除请输入:2");
    string s= Console.ReadLine();
    if (s == "1")
    {
    if (da.Delete(code))
    {
    Console.WriteLine("删除成功!");
    }
    else
    {
    Console.WriteLine("删除失败!");
    }
    }
    else
    {
    Console.WriteLine("数据已保留!");
    }
    Console.ReadLine();
    }
    }
    }

    五、查俩表(就再做另一表的实体类,数据访问类)

    1、实体类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApplication1
    {
    public class Info
    {
    private string code;

    public string Code
    {
    get { return code; }
    set { code = value; }
    }
    private string name;

    public string Name
    {
    get { return name; }
    set { name = value; }
    }
    private bool sex;

    public bool Sex
    {
    get { return sex; }
    set { sex = value; }
    }
    private string nation;

    public string Nation
    {
    get { return nation; }
    set { nation = value; }
    }
    private DateTime birthday;

    public DateTime Birthday
    {
    get { return birthday; }
    set { birthday = value; }
    }


    }
    }

    2、数据访问类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.SqlClient;

    namespace ConsoleApplication1
    {
    public class InfoDA
    {
    private SqlConnection _conn;
    private SqlCommand _cmd;
    private SqlDataReader _dr;
    public InfoDA()
    {
    _conn = dbconnect.conn;
    _cmd = _conn.CreateCommand();
    }
    public List<Info> select()
    {
    _cmd.CommandText = "select * from Info";
    _conn.Open();
    _dr= _cmd.ExecuteReader();
    List<Info> list = new List<Info>();
    if (_dr.HasRows)
    {
    while (_dr.Read())
    {
    Info data = new Info();
    data.Code=_dr[0].ToString();
    data.Name=_dr[1].ToString();
    data.Sex=Convert.ToBoolean( _dr[2]);
    data.Nation=_dr[3].ToString();
    data.Birthday=Convert.ToDateTime( _dr[4]);

    list.Add(data);

    }
    }
    _conn.Close();
    return list;
    }

    }
    }

    3、操作表

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main(string[] args)
    {
    InfoDA da = new InfoDA();
    List<Info> list = da.select();
    foreach (Info data in list)
    {
    string sexname = data.Sex ? "男" : "女";

    //先在InfoDA里做封装方法,再过来调用,
    nationDA nda = new nationDA();
    string nname= nda.nationname(data.Nation);
    Console.WriteLine(data.Code + "--" + data.Name + "--" + sexname + "--" + nname + "--" + data.Birthday);
    }


    Console.ReadLine();
    }
    }
    }

  • 相关阅读:
    你喜欢使用eclipse+tomcat编程吗?!
    "ERR_GFX_D3D_INIT", GTA5-报错解决办法
    这样写JS的方式对吗?
    webui layout like desktop rich client
    2014年12月23日00:42:54——PS4
    2014年12月20日00:33:14-遮罩+进度条-extjs form.isvalid
    十分钟部署智能合约
    idea clion编译器
    parity 注记词
    go语言学习笔记
  • 原文地址:https://www.cnblogs.com/yp11/p/5780847.html
Copyright © 2011-2022 走看看