zoukankan      html  css  js  c++  java
  • ADO.NET完整的删除与修改, 实体类和数据访问类

     

    1 完整的删除与修改

    删除和修改之前先进行查找,看看有没有这条记录。

    (1)先查

    bool bb = false;//定义中间变量

    cm.CommandText = "select * from users where uname=@name";

    //@key占位符,Parameters先清空,再添加。

    cm.Parameters.Clear();  //清空,

    cm.Parameters.Add("@name",name1); //添加

    con.Open();

    SqlDataReader dr1 = cm.ExecuteReader();

    if(dr1.HasRows ) //判断有没有这条记录

    {

     bb = true;               

    }

    con.Close();

    (2)删除

    if(bb)//记录存在,执行下面删除

    {

    Console.Write("您的用户名是『"+name1+"』,请确认是否删除Y/N):");

    string ss = Console.ReadLine().ToUpper();

    if(ss=="Y")//用户确认删除

    {

     编写删除语句;

     con.Open();

     cm.ExecuteNonQuery();

     con.Close();

    Console.WriteLine("您的信息删除成功!");

    }

    Else //用户不修改

    {

    Console.WriteLine("您未进行信息删除");

    }                

    }

    else//记录不存在,执行下面

    {

     Console.WriteLine("用户名『"+name1+"』不存在");

    }

    (3)修改

    if(bb)//记录存在,执行下面修改

    {

    Console.Write("您的用户名是『"+name1+"』,请确认是否修改(Y/N):");

    string ss = Console.ReadLine().ToUpper();

    if(ss=="Y")//用户确认修改

    {

     编写修改语句;

     con.Open();

     cm.ExecuteNonQuery();

     con.Close();

     Console.WriteLine("您的信息修改成功!");

    }

    Else //用户不修改

    {

    Console.WriteLine("您未进行信息修改!");

    }              

    }

    else//记录不存在,执行下面

    {

     Console.WriteLine("用户名『"+name1+"』不存在");

    }

     

    2 SQL数据库字符串注入攻击

    (1)攻击:控制台输入信息时加上“’;SQL语句;--”,这个语句会执行。

    ’;  结束上个语句  --注释掉后边的内容

    (2)防止攻击:parameters @key占位符,先清空,再添加

    Parameters这个集合中将此占位符所代表的数据补全。

    如:

    cm.CommandText = "select * from users where uname=@name";

    cm.Parameters.Clear();

    cm.Parameters.Add("@name",name1);


    3 实体类和数据访问类

    (1)实体类:封装

    封装一个类,类名与数据库表名一致;成员变量名与列名一致,多一个下划线;

    成员变量封装完的属性,就会与数据表中的列名一致。

    每一行数据都可以存成一个对象,操作这个对象,就相当于对某一行数据进行整体操作。

     public class users
        {
            private string _uname;
            public string Uname
            {
                get { return _uname; }
                set { _uname = value; }
            }
    
            private int _umima;
            public int Umima
            {
                get { return _umima; }
                set { _umima = value; }
            }
    
            private string _unicheng;
            public string Unicheng
            {
                get { return _unicheng; }
                set { _unicheng = value; }
            }
    
            private bool _usex;
            public bool usex
            {
                get {return _usex;}
                set { _usex = value; }       
            }
    
            private DateTime _ubir;
            public DateTime Ubir
            {
                get { return _ubir; }
                set { _ubir = value; }
            }
    
            private string _uzu;
            public string Uzu
            {
                get { return _uzu; }
                set { _uzu = value; }
            }
        }
    

      

    (2)数据访问类:

    就是将对数据库的一些操作,单独写到一个类中,封成一些方法,等待调用

    结构看起来会非常清晰。

    //数据访问类
    public class usersdata { SqlConnection conn = null; SqlCommand com = null; public usersdata()//结构化 { conn = new SqlConnection("server=.;database=lianxi;user=sa;pwd=123"); com = conn.CreateCommand(); } ///删除前先查用户是否存在 public bool chasg(string name)//查看时返回bool类型 { bool b = false; com.CommandText = "select * from users where uname=@name"; com.Parameters.Clear(); com.Parameters.Add("@name",name); conn.Open(); SqlDataReader dr = com.ExecuteReader(); if(dr.HasRows ) { b = true; } conn.Close(); return b; } ///删除 public void shan(string name) { com.CommandText = "delete from users where uname=@name"; com.Parameters.Clear(); com.Parameters.Add("@name",name ); conn.Open(); com.ExecuteNonQuery(); conn.Close(); } } //主函数 users u = new users();//实例化实体类 usersdata ud = new usersdata();实例化数据访问类 Console.Write("请输入要删除人的姓名:"); string name = Console.ReadLine(); bool bb = ud.chasg(name);//调用数据访问类中的查询方法 if (bb)//查询结果返回true,进行删除 { Console.Write("用户名存在"); ud.shan(name);//调用数据访问类中的删除方法 Console.Write("删除成功"); } else//查询结果返回false { Console.Write("用户名不存在"); }

      

    4三层开发:

    界面层 - UI

    业务逻辑层 - C#代码部分

    数据访问层 - 实体类和数据访问类

     

  • 相关阅读:
    python核心编程2 第八章 练习
    python核心编程2 第六章 练习
    python核心编程2 第五章 练习
    Redis
    CENTOS7错误:Cannot find a valid baseurl for repo: base/7/x86_6
    HTTP协议
    计算机网络知识点
    好记性不如烂笔头~
    一些算法题
    解决mysql插入数据时出现Incorrect string value: 'xF0x9F...' 的异常
  • 原文地址:https://www.cnblogs.com/zhang-dandan-1/p/5870023.html
Copyright © 2011-2022 走看看