完整修改和查询:
中间变量运用。
1、先查
2、执行操作
----------------------------------------------------
namespace ADO.NET_小项目 { public class sql_delete { public void delete(string sql)//sql 需要传入连接字符(1.连接哪个服务器,2.哪个数据库,3.连接用户名,4.密码) { Console.WriteLine("请输入您需要删除的学号" ); int num = int.Parse(Console.ReadLine()); selectfan selectfan = new selectfan();//实例化查询是否存在类 int fan = selectfan.selectf(sql,num);//查询是否存在该学生 if (fan == 0)//如果查询返回值是0表示不存在该信息 { Console.WriteLine("查询完毕您要删除的学生不存在,请检查输入是否正确!"); } else { Console.WriteLine("查询完毕您确定要删除么?(Y/N)"); string s = Console.ReadLine(); if (s.ToUpper() == "Y") { //1.建立数据库连接类 SqlConnection cnn = new SqlConnection(sql); //2.建立数据库操作类 SqlCommand cmd = cnn.CreateCommand(); cmd.CommandText = "delete from Student where S_code=" + num + "";//SQL操作语句(此处为删除语句) //3.执行操作语句 cnn.Open();//开启数据库连接通道 cmd.ExecuteNonQuery();//数据库操作执行 cnn.Close();//关闭数据库连接通道 Console.WriteLine("删除成功!"); } } } } }
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);
-----------------------------------------------------------------
实体类,数据访问类:
实体类:封装
封装一个类,类名与数据库表名一致
成员变量名与列名一致,多一个下划线
成员变量封装完的属性,就会与数据表中的列名一致
每一行数据都可以存成一个对象,操作这个对象,就相当于对某一行数据进行整体操作
数据访问类:
就是将对数据库的一些操作,单独写到一个类中,封成一些方法,等待调用
结构看起来会非常清晰
三层开发:
界面层 - UI层
业务逻辑层 - C#代码部分
数据访问层 - 实体类和数据访问类