完整修改删除、数据库字符串攻击与防护、实体类与数据访问类
完整修改和查询:
中间变量运用。
1、先查
bool has = false;//初始定义一个bool变量为flase
Console.Write("请输入要删除的用户名:");//用户输入
string Uname = Console.ReadLine();//接收
SqlConnection conn = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123");//连接数据库
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select *from Users where UserName='" + Uname + "'";
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)//判断用户输入变量数据是否存在
{
has = true;
}
conn.Close();
2、执行操作(删除或修改)
if (has)//如果存在判断为true
{
Console.WriteLine("已经查到[" + Uname + "]用户信息,是否确定要删除吗?(Y/N):");//提示确认是否删除
string u = Console.ReadLine();
if (u.ToUpper() == "Y")//确定删除
{
cmd.CommandText = "delete from Users where UserName='" + Uname + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
Console.WriteLine(Uname + "删除成功!");
}
}
else//如果存在判断为flase
{
Console.WriteLine("未查到[" + Uname + "]用户信息,请确认用户名输入是否正确!");
}
Console.ReadLine();
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);
实体类,数据访问类:
实体类:封装
封装一个类,类名与数据库表名一致
成员变量名与列名一致,多一个下划线
成员变量封装完的属性,就会与数据表中的列名一致
每一行数据都可以存成一个对象,操作这个对象,就相当于对某一行数据进行整体操作
数据访问类:
就是将对数据库的一些操作,单独写到一个类中,封成一些方法,等待调用
结构看起来会非常清晰