版权声明:本文为博主原创文章。未经博主同意不得转载。 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. [转]深入理解ajax系列——头部消息

    每个HTTP请求和响应都会带有相应的头部信息,其中有的对开发人员有用.XHR对象提供了操作头部信息的方法.本文将详细介绍HTTP的头部信息 默认信息 默认情况下,在发送XHR请求的同时,还会发送下列头 ...

  2. Hackerrank--Prime Sum

    题目链接 The problem is quite simple. You're given a number N and a positive integer K. Tell if N can be ...

  3. JavaScript类型转换规则

    注:JavaScript相对于其他强类型(如c,c++,java,定义变量的同时申明变量类型)语言来说,是弱类型和松散型(在定义的时候不需要申明变量类型,在使用的时候才赋值给她什么类型就是什么类型.所 ...

  4. jnhs 无法提交断点LineBreakpoint hibernate4CURD : -1, 原因是: 找不到 URL 'file:/E:/版本控制/Design-java/hibernate4CURD/' 的源根目录。请验证项目源的设置。

    无法提交断点LineBreakpoint hibernate4CURD : -1, 原因是: 找不到 URL 'file:/E:/版本控制/Design-java/hibernate4CURD/' 的 ...

  5. 【CodeVS】1023 GPA计算

    1023 GPA计算 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 小松终于步入了大学的殿堂,带着兴奋和憧憬,他参加了信息科学 ...

  6. 第十章—DOM(二)——Element类型

    Element类型用于表现HTML和XML,提供了对元素标签名,子节点和特效的访问.Element节点具有以下特征: 要访问元素的标签名,可以使用nodeName属性,也可以使用tagName属性.这 ...

  7. Linux C/C++开发

    首先就是要熟练在vim里面写代码,其实就是没有提示和自动补全了,这个问题并不大. 我服务器gcc版本是4.8.5,所以就按照这个来了 https://gcc.gnu.org/onlinedocs/gc ...

  8. [java]反射1 2017-06-25 21:50 79人阅读 评论(10) 收藏

    很多东西的实现基础,都是反射,spring的AOP,动态代理等等,下面咱们来学习一下Java的反射 什么是反射? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于 ...

  9. The World's Top 15 Stock Exchanges by Domestic Market Capitalization

     The World's Top 15 Stock Exchanges by Domestic Market Capitalization in 2008 4 Euronext Belgium, Fr ...

  10. django其他

    聚合查询 聚合函数必须在分组之后使用 没有分组默认整体为一组 聚合函数 Max, Min, Sum, Avg, Count 从django.db.models 导入方法,然后使用关键字aggregat ...