版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/xdd19910505/article/details/35574125

一、使用背景

       机房收费系统结账的时候。需求是当选择一个用户。同一时候显示该用注冊、充值和退卡记录。这些数据来提供结账数据。而结账之后要同一时候更新卡、充值、退卡表三个表,假设直接写SQl语句的话会是非常复杂的。

而这些需求可以封装为一个存储过程,点击结账之后仅仅须要传入參数运行存储过程就可以。

            

二、存储过程简单介绍

      存储过程(Stored Procedure)是一组为了完毕特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出參数(假设该存储过程带有參数)来运行它。

存储过程是数据库中的一个重要对象,不论什么一个设计良好的数据库应用程序都应该用到存储过程。

            

三、存储过程的长处:

        1、封装事务规则。

        2、同意标准组件式编程

        3、可以实现较快的运行速度(批处理的T——SQL语句每次运行时都要进行编译和优化,存储过程是预编译)

        4、能过降低网络流量

        5、被作为一种安全机制来充分利用(避免非授权用户对数据的訪问)

             

四、在机房收费系统中的应用

       首先在数据库中建立存储过程

  

      语句:

<span style="font-size:14px;">-- =============================================
-- Author: <许丹>
-- Create date: <2014年6月28日>
-- Description: <结账同一时候更新卡表、充值表、退卡表>
-- =============================================
CREATE PROCEDURE [dbo].[Proc_PayAccounts]
-- Add the parameters for the stored procedure here
@strUserID char(6) --用户ID
AS
BEGIN
update Card_Info set BillStatus ='已结账' where UserID =@strUserID and BillStatus ='未结账'
update ReCharge_Info set Status ='已结账' where UserID =@strUserID and Status ='未结账'
update CancelCard_Info set BillStatus ='已结账' where UserID =@strUserID and BillStatus ='未结账'
END</span>

D层代码:

<span style="font-size:14px;"> Public Function SettleAccounts(ByVal euser As Entity.UserInfo) As Integer Implements IDAL.IUser.SettleAccounts

        Dim helper As New Helper.SqlHelper
Dim strSql As String = "Proc_PayAccounts" '声明并实例化存储过程
Dim sqlParams As SqlParameter() = {New SqlParameter("@strUserID", euser.UserID)} '声明并实例化參数数组
Return helper.ExecAddDelUpdate(strSql, CommandType.StoredProcedure, sqlParams) '运行并返回更新操作结果
End Function</span>

五、总结:

        1.存储过程目的在于可以方便的从系统表中查询信息或完毕于更新数据库表相关的管理任务。可以实现较快的运行速度假设某一操作包括大量T-SQL语句代码,分别被多次运行,那么存储过程要比批处理的运行速度快得多。

由于存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化并给出终于被存在系统表中的存储计划。

而批处理的T-SQL语句每次运行都须要预编译和优化,所以速度要慢一些。

       
2.使用存储过程,就是对数据库进行优化,从而达到提高系统运行速度。存储过程仅仅在创造时进行编译。以后每次运行存储过程都不需再又一次编译,而一般SQL语句每运行一次就编译一次,所以使用存储过程可提高数据库运行速度。

       3.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时)。可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。这些操作。假设用程序来完毕,就变成了一条条的
SQL 语句,可能要多次连接数据库。而换成存储,仅仅须要连接一次数据库就行了。
        4.存储过程可以反复使用,可降低数据库开发者的工作量。
        5.安全性高,可设定仅仅有某此用户才具有对指定存储过程的使用权。

vb.net机房收费系统——存储过程的更多相关文章

  1. VB.NET 机房收费系统项目总结

    VB.NET机房收费系统项目总结 从2013年5月3日——2013年8月20日历时三个多月的.NET机房收费系统终于完成了.项目做完了,真有一种如释重负的感觉. 下面我将从文档.UML图,代码这三个方 ...

  2. 小结:VB.NET机房收费系统个人版

    经过几天的缝缝补补,自己的个人版最终OK了,!或许是由于有第一次的机房收费系统的经验,这次做,感觉很亲切. 在业务逻辑方面,沿袭曾经的逻辑.做了一点升级.可是修改不大. 在数据库方面,感觉自己从一个小 ...

  3. VB.NET机房收费系统总结

    总感觉这次机房收费系统非常有份量,一直没有下手总结,从2014-7-27至2014-9-29.这中间有太多故事和成长.首先说一下两次机房收费系统的不同,它是我们从面向过程向面向对象的一个转变.在.NE ...

  4. vb.net机房收费系统之组合查询

    我个人一直认为,组合查询是机房收费系统的一个难点,尤其是用到三层之后,如果要为组合查询中的每一个查询建立一个显然是太麻烦了. 下面介绍一下我的方法,对大家起个参考作用. 我将该表中可输入的内容定义为一 ...

  5. VB.NET<机房收费系统个人重构版>你都学会了什么(之五)

    接着上篇我们说的配置文件,今天我们来说一下接口. 1.UML图 2.三层架构 3.Sqlhelper 4.配置文件 5.接口 6.设计模式 什么是接口呢?我们可以将接口理解为用于沟通的中介的抽象化.可 ...

  6. 【vb.net机房收费系统】之sqlhelper 标签: 数据库 2015-05-17 10:47 819人阅读 评论(15)

    在敲机房收费重构版的时候,用到了sqlhelper,当时不知道怎么开始,各种听别人说,张晗说,一定要用sqlhelper,特别好用,我当时没有用balabala~当时一听,哎哎哎,这个高级,要搞一搞, ...

  7. 【vb.net机房收费系统】之没有包含要从继承的组件的已生成程序集 标签: vb.net继承 2015-05-02 15:19 1012人阅读

    在敲到组合查询这个功能的时候,需要用到窗体的继承,但是在新建继承窗体的时候,出现了错误(没有包含要从继承的组件的已生成程序集).如下图: 问题的产生:当时没怎么注意,也不知道怎么弄的,最后反正是继承上 ...

  8. vb.net机房收费系统之配置文件

    总是听到说用反射+配置文件访问数据库,那配置文件到底什么东西? 1.定义: 配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置, ...

  9. VB.NET版机房收费系统---报表

    报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据 ...

随机推荐

  1. PHP获取搜索引擎关键词

    有时候我们需要知道用户通过哪个搜索引擎,通过拿个关键词访问我们页面,当然js也可以实现,这里介绍下php的实现代码,包含(百度.谷歌.雅虎.搜狗.搜搜.必应.有道)几大搜索引擎的获取方法. //获取来 ...

  2. [jnhs]未完待续HttpServletRequest示例

    uri: /kaihu/showip.html method: GET QueryString: null Parameters: Headers: Name: host Value: localho ...

  3. SSH 框架controller向jsp传递List jsp中使用el表达式获取

    mvc可以使用ModelAndViev传递数据选择跳转的视图 controller中的代码, 把一个模拟的表单studentListSimulate传给ModelAndView @RequestMap ...

  4. tp5.1 本地正常, 线上route.php不起作用的问题

    由于本项目 的.htaccess文件是放在根目录的, 上传没有覆盖,重新编辑 <IfModule mod_rewrite.c> Options +FollowSymlinks -Multi ...

  5. HR招聘_(七)_招聘方法论(面试环节·动机判断)

    候选人选择一般会看硬性技能,软性技能,动机意愿三个方面的匹配程度,硬性技能主要指纵向的业务能力,部门面试官也会着重看这方面,软性技能包括沟通,情商,气质等.动机意愿非常重要,再优秀的如果没有意愿,动机 ...

  6. web前端学习(三)css学习笔记部分(1)-- css入门基础知识+基本样式

    1.介绍及语法 1.1CSS概述: CSS指层叠样式表 CSS样式表极大地提高了工作效率 如果值大于一个单词,需要加上引号(意思是值只有一个的时候可以不加引号) 1.2CSS高级语法 1.选择器分组 ...

  7. LintCode 合并二维数组

    合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 之前想的是用剑指offer里替换空格那种方法 但是把 ...

  8. VUE ECharts人际关系图

    1. 概述 1.1 说明 项目中需要对某个人的人际关系进行展示,故使用echarts中的关系图进行处理此需求. 2. 代码 2.1 代码示例 <template> <div clas ...

  9. sqlserver 大数据量的insert、delete操作优化

    http://blog.csdn.net/lanyuzhen/article/details/7547476 --大批量导出orders表:insert DBCC DROPCLEANBUFFERS   ...

  10. Vue.之. 动态设置按钮Disabled

    Vue.之. 动态设置按钮Disabled 按钮代码如下: 添加了一个 属性      :disabled="isAble"  ,控制:更新按钮.重置按钮 <el-form- ...