简单的web三层架构系统【第四版】

上一次写了第三版,

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

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

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

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

 set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: H_F_us
-- Create date:  2014年12月29日09:18:01
-- Description: 删除一条员工信息
-- =============================================
ALTER PROCEDURE [dbo].[deleteperson] @id int AS
BEGIN delete from person where id = @id END

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

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

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

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

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

personDAO类中:

         /// <summary>
/// 删除员工信息
/// </summary>
/// <param name="id">要删除员工的id</param>
/// <returns>返回真假值:如果是真显示删除成功,如果是假显示删除失败</returns>
public bool delete(person p)
{
bool flag = false; SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter("@id", p.id)
}; string prd = "deleteperson"; int res = sq.ExecuteNonQuery(prd, paras, CommandType.StoredProcedure); if (res > )
{
flag = true;
} return flag;
}

SQLHelper类中:

         /// <summary>
/// 执行带参数的增删改SQL语句
/// </summary>
/// <param name="sql">要执行的SQL语句</param>
/// <param name="paras">传入的参数</param>
/// <returns>返回受影响的行数</returns>
public int ExecuteNonQuery(string sql, SqlParameter[] paras, CommandType cmt)
{
cmd = new SqlCommand(sql, getcon()); cmd.CommandType = cmt; cmd.Parameters.AddRange(paras); return cmd.ExecuteNonQuery();
}

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

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

上一篇:Windows下bat命令


下一篇:Confluence 6 超过当前许可证期限进行升级