zoukankan      html  css  js  c++  java
  • 简单的web三层架构系统【第四版】

    上一次写了第三版,

    因为之前无意之间看到一段视频,说是把系统中所有的SQL语句都做成存储过程。可以在很大程度上优化系统的SQL执行速度。所以百度了一下细节问题,之后我把所有的SQL语句,都做成了存储过程。

    其实写存储过程也很简单(可能是简单的系统,不需要太复杂的SQL语句),只需要在数据库里建立存储过程,然后在程序之中调用就行。

    1.首先先建立存储过程:

     展开使用的数据库→可编程性→存储过程。然后右击,新建存储过程。

     1 set ANSI_NULLS ON
     2 set QUOTED_IDENTIFIER ON
     3 GO
     4 -- =============================================
     5 -- Author:        H_F_us
     6 -- Create date:  2014年12月29日09:18:01
     7 -- Description:   删除一条员工信息
     8 -- =============================================
     9 ALTER PROCEDURE [dbo].[deleteperson]
    10 
    11     @id int    
    12 
    13 AS
    14 BEGIN
    15 
    16     delete from person where id = @id
    17 
    18 END

    上面是建立好的存储过程:

    1.其中ALTER PROCEDURE 后面跟的是存储过程的名称,只要符合SQL命名规范,可任意选取。

    2.AS上面,是SQL语句中要使用到的参数。

    3.BEGIN END之间是要执行的SQL语句。

    这时候就可以在系统代码中调用了。

    personDAO类中:

     1         /// <summary>
     2         /// 删除员工信息
     3         /// </summary>
     4         /// <param name="id">要删除员工的id</param>
     5         /// <returns>返回真假值:如果是真显示删除成功,如果是假显示删除失败</returns>
     6         public bool delete(person p)
     7         {
     8             bool flag = false;
     9 
    10             SqlParameter[] paras = new SqlParameter[]
    11             {
    12                 new SqlParameter("@id", p.id)
    13             };
    14 
    15             string prd = "deleteperson";
    16 
    17             int res = sq.ExecuteNonQuery(prd, paras, CommandType.StoredProcedure);
    18 
    19             if (res > 0)
    20             {
    21                 flag = true;
    22             }
    23 
    24             return flag;
    25         }

    SQLHelper类中:

     1         /// <summary>
     2         /// 执行带参数的增删改SQL语句
     3         /// </summary>
     4         /// <param name="sql">要执行的SQL语句</param>
     5         /// <param name="paras">传入的参数</param>
     6         /// <returns>返回受影响的行数</returns>
     7         public int ExecuteNonQuery(string sql, SqlParameter[] paras, CommandType cmt)
     8         {
     9             cmd = new SqlCommand(sql, getcon());
    10 
    11             cmd.CommandType = cmt;
    12 
    13             cmd.Parameters.AddRange(paras);
    15 
    16             return cmd.ExecuteNonQuery();
    17         }

    注解:*在SQLHelper类中的ExecuteNonQuery方法中添加,CommandType cmt,也就是要指明要执行的是什么类型,之后就可以把原本的SQL语句换成存储过程,然后在SQLHelper类中,添加 cmd.CommandType = cmt; 指定要执行的的类型。

    上面就是使用存储过程执行SQL语句。写的不是太详细,但是核心代码写了出来,方便以后查看。

  • 相关阅读:
    bzoj1098: [POI2007]办公楼biu
    codeforce1070 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred) 题解
    南京大学发布无序列限制的DNA编辑新工具(转自生物通)
    Matlab界面清洗
    二硫化铼(ReS2)的电子输运特性及逻辑器件研究进展
    java中数据字典的使用:
    表单的重复提交,解决方案
    java中常量文件的配置与读取
    java中生成验证码,以及验证码的使用
    邮箱验证,工具类
  • 原文地址:https://www.cnblogs.com/KTblog/p/4192486.html
Copyright © 2011-2022 走看看