完整修改和查询
1、先查
判断数据库是否有该内容,有该内容往下执行,没有则报错
2、执行操作
//完整修改 bool has = false; 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(); if (has) { Console.WriteLine("已经查到[" + Uname + "]用户信息,请进行修改"); Console.Write("请输入修改后的密码:"); string Pwd = Console.ReadLine(); Console.Write("请输入修改后的昵称:"); string Nname = Console.ReadLine(); Console.Write("请输入修改后的性别:"); string Sex = Console.ReadLine(); Console.Write("请输入修改后的生日:"); string Birthday = Console.ReadLine(); Console.Write("请输入修改后的民族:"); string Nation = Console.ReadLine(); //@key 占位符 cmd.CommandText = " update Users set PassWord=@pwd,NickName=@nname,Sex=@sex,Birthday=@bir,Nation=@nat where UserName=@uname;"; 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); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); Console.WriteLine("修改完毕!"); } else { Console.WriteLine("未查到[" + Uname + "]用户信息,请确认用户名输入是否正确!"); } Console.ReadLine(); //完整删除 bool has = false; 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(); if (has) { 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 { 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);
实体类,数据访问类:
实体类:封装 封装一个类,类名与数据库表名一致 成员变量名与列名一致,多一个下划线 成员变量封装完的属性,就会与数据表中的列名一致
每一行数据都可以存成一个对象,操作这个对象,就相当于对某一行数据进行整体操作
数据访问类: 就是将对数据库的一些操作,单独写到一个类中,封成一些方法,等待调用
结构看起来会非常清晰