用于建立、修改、删除数据库对象,包括创建语句(create)、修改语句(alter)、删除语句(drop),比如使用CREATE TABLE创建表,使用ALTER TABLE修改表,使用DROP TABLE删除表等动作。这类语言不需要事务的参与,自动提交
用于改变数据库数据,包括insert、update、delete三条语句。其中,insert语句用于将数据插入到数据库中,update语句用于更新数据库中已存在的数据,delete用于删除数据库中已存在的数据。DML语言和事务是相关的,执行完DML操作后必须经过事务控制语句提交后才真正的将改变引用到数据库中。
用来维护数据一致性的语句,包括提交(COMMIT)、回滚(ROLLBACK)、保存点(SAVEPOINT)三条语句,其中COMMIT用来确认已经进行的数据库改变, ROLLBACK语句用来取消已经进行的数据库改变,当执行DML操作后(也就是上面说的增加、修改、删除等动作),可以使用COMMIT语句来确认这种改变,或者使用ROLLBACK取消这种改变。SAVEPOINT语句用来设置保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变。
public int AddUserInfo(UserInfo userInfo) { try { //一、通过EF完成添加 //db.UserInfo.Add(userInfo); //return db.SaveChanges(); //二、通过SQL语句完成添加 //二-1、防止SQL注入 //二-2、SqlQuery 只能执行 select 类型的语句 //以下这种 不防SQL注入 //return db.Database.ExecuteSqlCommand($"insert into UserInfo values ('{userInfo.Uname}','{userInfo.Upwd}','{userInfo.Udell}','{userInfo.Usex}','{userInfo.Email}','{userInfo.Utime}')"); //以下这种 防SQL注入 SqlParameter[] sqls = { new SqlParameter("@Uname",userInfo.Uname), new SqlParameter("@Upwd",userInfo.Upwd), new SqlParameter("@Udell",userInfo.Udell), new SqlParameter("@Usex",userInfo.Usex), new SqlParameter("@Email",userInfo.Email), new SqlParameter("@Utime",userInfo.Utime) }; return db.Database.ExecuteSqlCommand("insert into UserInfo values(@Uname,@Upwd,@Udell,@Usex,@Email,@Utime)",sqls); //三、通过存储过程添加 } catch (Exception) { throw; } }