数据的软删除-管理员的CRUD
数据的“软删除”---把数据真正删除在某些时候会有问题。IsDeleted字段,false表示不删除,而是让用户可以看到,true表示是软删除,用户看不到。
一个表引用另外一张表的时候一定要引用主键。
用户的初始密码和密码重置,解锁。
第一步,再次设置数据库,为表T_Operator添加一个字段“IsDeleted”,bit类型(就是C#中的bool),不允许为空,此时保存时候会提示如下:
解决方法:第一步:在“工具”--->"选项"然后如图
第二步:是因为数据库中已经存有数据,新添加的字段“IsDeleted”不可为空,但是已存在的数据他的IsDeleted是空的,所以会报错。处理办法是,先允许此字段为空,然后再编辑之前的数据,为其添加该字段的值。然后保存即可。
第二步,在Operator.cs中为Operator类添加IsDeleted字段,代码如下:
public bool IsDeleted { get; set; }
第三步:在OperatorDAL.cs中的Inser(Operator op)方法添加IsDeleted字段,如下:
SqlHelper.ExecuteNonQuery(@"insert into T_Operator (Id,UserName,Password,isDeleted) values(newid(), @UserName,@Password,0)",
(注意:在SQL语句中bit用0,1表示,但是在.NET中用bool表示)
public Operator ToOperator(DataRow row)方法添加IsDeleted字段,如下:
op.IsDeleted=(bool)row["IsDeleted"];
第四步:在OperatorADL.cs中添加显示全部数据的ListAll()方法。代码如下:
//显示所有 public Operator[] ListAll() { DataTable dt = SqlHelper.ExecuteDataTable("Select * from T_Operator where IsDeleted=0"); Operator[] operators = new Operator[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count;i++ ) { operators[i] = ToOperator(dt.Rows[i]); } return operators; }
注意:相关的功能要放在统一文件夹下,便于管理