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