存储过程

     在上一篇博客中说到子窗体重写父窗体的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

    就这样,在使用存储过程时只需将要操作的表的名称传入即可,在很大的程度上减少了代码的冗余
 二、触发器
   触发器可以自动同步更改数据表中的数据,它的工作原理和存储过程是一样,只不过是触发器在执行的时
 是自动的,不需要认为操作的。比如说两个表都有学生的信息,使用触发器后删除或修改一个表中的学生信
 后,另一个表中的学生信息会做相应的改变,这就是触发器的工作原理,可以说是一种自动执行的存储过程
 三、总结
   当接触到新鲜的技术时不要产生恐惧,你应该感到高兴,因为自己学习的时候又到了,而且在学习完之后
 了解了它的全貌之后就感觉不是初识时候那样难的
   遇到困难解决困难,这是我们学习和提高的好机会
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值