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#代码部分

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

     

  • 相关阅读:
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
    Visual Studio断点调试, 无法监视变量, 提示无法计算表达式
    ASP.NET MVC中MaxLength特性设置无效
    项目从.NET 4.5迁移到.NET 4.0遇到的问题
    发布网站时应该把debug设置false
    什么时候用var关键字
    扩展方法略好于帮助方法
    在基类构造器中调用虚方法需谨慎
    ASP.NET MVC中商品模块小样
    ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积02, 在界面实现
  • 原文地址:https://www.cnblogs.com/zhang-dandan-1/p/5870023.html
Copyright © 2011-2022 走看看