存储过程,数据库存储过程
在上一篇博客中说到子窗体重写父窗体的GetdbName方法时只需要返回要操作的数据库表即可,那么这
篇博客就来讲讲为什么只需返回表的名称
一、存储过程
存储过程是定义在数据库中,相当于一个方法在使用的时候直接调用该方法即可,是具有很高的抽象性
的方法,封装在数据库中使用起来非常方便
方法:在自己建立的数据库中的可编程性下有一个系统存储过程,右击新建存储过程,然后执行即可
下面是建立的存储过程
USE [charge] GO /****** Object: StoredProcedure [dbo].[PROC_GroupCheck] Script Date: 2015/3/7 20:23:54 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[PROC_GroupCheck] --参数-- @CombName1 varchar(50), @CombOper1 varchar(50), @txtContent1 varchar(50), @CobRelation1 varchar(50), @CombName2 varchar(50), @CombOper2 varchar(50), @txtContent2 varchar(50), @CobRelation2 varchar(50), @CombName3 varchar(50), @CombOper3 varchar(50), @txtContent3 varchar (50), @tableName varchar(50) AS --定义存储sql语句的参数-- declare @TempSql varchar(500) BEGIN --字符串拼接的方法-- SET @TempSql='SELECT * FROM '+@tableName +' WHERE '+ char(32) +@CombName1 + @CombOper1 + char(39)+@txtContent1+char(39) --当关系1不为空时 if @CobRelation1 != '' BEGIN SET @TempSql = @TempSql+char(32)+@CobRelation1 +char(32)+@CombName2 +@CombOper2 +CHAR(39)+@txtContent2 +CHAR(39) if @CobRelation2 != '' BEGIN SET @TempSql = @TempSql+CHAR(32)+@CobRelation2 +CHAR(32)+@CombName3 +@CombOper3 +CHAR(39)+@txtContent3 +CHAR(39) END END --执行sql语句-- EXECUTE(@TempSql) END
该过程中有固定的参数,说明是对于相似的窗体使用的
char(32)代表空格;char(39)代表单引号
以上就是定义好的存储过程,使用的时候在D层直接调用即可
Public Function CreateGroupCheck(groupcheck As Entity.GroupCheckEntity) As DataTable Implements IGroupCheck.CreateGroupCheck '实例化SqlHelper Dim helper As New SqlHelper Dim sql As String '调用存储过程 sql = "PROC_GroupCheck" '定义该操作类型为存储过程 Dim cmdtype As CommandType = CommandType.StoredProcedure '为存储过程中的参数赋值,参数名称要和数据库中的对应 Dim paras As SqlParameter() = {New SqlParameter("@CombName1", groupcheck.CombName1), New SqlParameter("@CombOper1", groupcheck.CombOper1), New SqlParameter("@txtContent1", groupcheck.TxtContent1), New SqlParameter("@CobRelation1", groupcheck.CobRelation1), New SqlParameter("@CombName2", groupcheck.CombName2), New SqlParameter("@CombOper2", groupcheck.CombOper2), New SqlParameter("@txtContent2", groupcheck.TxtContent2), New SqlParameter("@CobRelation2", groupcheck.CobRelation2), New SqlParameter("@CombName3", groupcheck.CombName3), New SqlParameter("@CombOper3", groupcheck.CombOper3), New SqlParameter("@txtContent3", groupcheck.TxtContent3), New SqlParameter("@tableName", groupcheck.TableName)} '返回查询到的数据 Return helper.ExecSelects(sql, cmdtype, paras) End Function
就这样,在使用存储过程时只需将要操作的表的名称传入即可,在很大的程度上减少了代码的冗余
二、触发器
触发器可以自动同步更改数据表中的数据,它的工作原理和存储过程是一样,只不过是触发器在执行的时
是自动的,不需要认为操作的。比如说两个表都有学生的信息,使用触发器后删除或修改一个表中的学生信
后,另一个表中的学生信息会做相应的改变,这就是触发器的工作原理,可以说是一种自动执行的存储过程
三、总结
当接触到新鲜的技术时不要产生恐惧,你应该感到高兴,因为自己学习的时候又到了,而且在学习完之后
了解了它的全貌之后就感觉不是初识时候那样难的
遇到困难解决困难,这是我们学习和提高的好机会
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。