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

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

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

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;
        }
防御攻击

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

原文地址:https://www.cnblogs.com/zhangxin4477/p/6741106.html