• 实体类,数据访问类.字符串攻击.防攻击


    程序分三层:界面层、业务逻辑层、数据访问层

    这里主要操作的是数据访问层,数据访问层又分为:

    1.实体类

    2.数据访问类

    存放位置:APP_Code文件中

    一.实体类

    最简单的封装
    把数据库的表名变成类的类名
    把数据库的每一个列,变为实体类中的成员变量和属性
    列名与属性名一致

    有几行就有几个实体类

    这是一个简单的实体类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication2.APP_Code
    {
        public class Users
        {
            private int _Ids;
    
            public int Ids
            {
                get { return _Ids; }
                set { _Ids = value; }
            }
            private string _Username;
    
            public string Username
            {
                get { return _Username; }
                set { _Username = value; }
            }
            private string _Password;
    
            public string Password
            {
                get { return _Password; }
                set { _Password = value; }
            }
            private string _Nickname;
    
            public string Nickname
            {
                get { return _Nickname; }
                set { _Nickname = value; }
            }
            private bool _Sex;
    
            public bool Sex
            {
                get { return _Sex; }
                set { _Sex = value; }
            }
            private DateTime _Birthday;
    
            public DateTime Birthday
            {
                get { return _Birthday; }
                set { _Birthday = value; }
            }
            private String _Nation;
    
            public String Nation
            {
                get { return _Nation; }
                set { _Nation = value; }
            }
    
    
        }
    }
    实体类

    二.数据访问类

    将某个表的数据库操作写成一个一个方法,放入到此类中
    供外部调用

    这是一个数据访问类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    namespace ConsoleApplication2.APP_Code
    {
        public class UsersData
        {
    
            // 数据库连接
            SqlConnection conn = null;
            SqlCommand cmd = null;
    
            public UsersData()
            {
                conn = new SqlConnection("server=.;database=ODA;user=sa;pwd=123;");
                cmd = conn.CreateCommand();
            }
    
            //数据库数据查询
            public List<Users> Celect()
            {
                List<Users> li = new List<Users>();
                cmd.CommandText = "select*from Users";
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    Users n = new Users();
                    n.Ids = Convert.ToInt32(dr["Ids"]);
                    n.Username = dr["Username"].ToString();
                    n.Password = dr["Password"].ToString();
                    n.Nickname = dr["Nickname"].ToString();
                    n.Sex = Convert.ToBoolean(dr["Sex"]);
                    n.Birthday = Convert.ToDateTime(dr["Birthday"]);
                    n.Nation = dr["Nation"].ToString();
                    li.Add(n);
                }
                conn.Close();
                return li;
            }
    数据访问类

    三.字符串攻击,防攻击

    字符串攻击:

    主要利用获取需用户输入的字符串时,通过输入精心编制的含有某种指令的字符串,从而对数据库进行攻击性操作

    防御攻击:

        //数据库数据添加
            public int Add(Users mm)
            {
                conn.Open();
                cmd.CommandText = "insert into Users values(@a,@b,@c,@d,@e,@f);";
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@a", mm.Username);
                cmd.Parameters.AddWithValue("@b", mm.Password);
                cmd.Parameters.AddWithValue("@c", mm.Nickname);
                cmd.Parameters.AddWithValue("@d", mm.Sex);
                cmd.Parameters.AddWithValue("@e", mm.Birthday);
                cmd.Parameters.AddWithValue("@f", mm.Nation);
                int a = cmd.ExecuteNonQuery();
                conn.Close();
                return a;
            }
    防御攻击

    通过使用此占位符来进行防字符串攻击,这样,占位符所代表的的仅仅是字符串,不带有代码含义。

  • 相关阅读:
    加工零件(Dijkstra)
    尼克的任务(DP)
    挖地雷(记忆化搜索)
    滑雪(DP,记忆化搜索)
    子串和子序列(DP)
    八皇后(DFS)
    打印feign报错日志
    restTemplate 踩坑
    共享全局对象
    获取当月多少天
  • 原文地址:https://www.cnblogs.com/zhangxin4477/p/6741106.html
Copyright © 2020-2023  润新知