阅读 43

SQL(DDL、DML、TCL)

一、数据定义语言(DDL)

用于建立、修改、删除数据库对象,包括创建语句(create)、修改语句(alter)、删除语句(drop),比如使用CREATE TABLE创建表,使用ALTER TABLE修改表,使用DROP TABLE删除表等动作。这类语言不需要事务的参与,自动提交

二、数据操作语言(DML)

用于改变数据库数据,包括insert、update、delete三条语句。其中,insert语句用于将数据插入到数据库中,update语句用于更新数据库中已存在的数据,delete用于删除数据库中已存在的数据。DML语言和事务是相关的,执行完DML操作后必须经过事务控制语句提交后才真正的将改变引用到数据库中。

三、事务控制语言(TCL)

用来维护数据一致性的语句,包括提交(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;
          }
      }

 

原文:https://www.cnblogs.com/666l/p/15158669.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐