实体类、数据访问类及防止SQL数据库字符串注入攻击

一、实体类

封装

封装一个类,类名与数据库表名一致
成员变量名与列名一致,多一个下划线
成员变量封装完的属性,就会与数据表中的列名一致

例:

namespace 实体类和数据访问类.App_Code
{
public class Users
{
private string _UserName;

/// <summary>
/// 用户名
/// </summary>
public string UserName
{
get { return _UserName; }
set { _UserName = value; }
}

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

二、数据访问类

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

结构看起来会非常清晰

例:

namespace 实体类和数据访问类.App_Code
{
public class UsersData
{
SqlConnection conn = null;
SqlCommand cmd = null;

public UsersData()
{
conn = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123");
cmd = conn.CreateCommand();
}

/// <summary>
/// Users表添加方法
/// </summary>
/// <param name="u">要添加到数据库的Users对象</param>
public void Insert(Users u)
{
cmd.CommandText = "insert into Users values(@a)";
cmd.Parameters.Clear();
cmd.Parameters.Add("@a", u.UserName);

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}

三、防止SQL数据库字符串注入攻击

SQL数据库字符串注入攻击:
需要使用cmd.Parameters这个集合
占位符: @key 代表这个位置用这个占位符占住了

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

cmd.Parameters.Clear(); --添加占位符数据之前,要清空此集合
cmd.Parameters.Add("@pwd", Pwd); --占位符内容填充
cmd.Parameters.Add("@nname",Nname);
cmd.Parameters.Add("@sex", (Sex=="男")?"1":"0");
cmd.Parameters.Add("@bir", Birthday);
cmd.Parameters.Add("@nat", Nation);
cmd.Parameters.Add("@uname", Uname);

原文地址:https://www.cnblogs.com/xtq0313/p/5869031.html