vb.net机房收费系统——存储过程
版权声明:本文为博主原创文章。未经博主同意不得转载。 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机房收费系统——存储过程的更多相关文章
- VB.NET 机房收费系统项目总结
VB.NET机房收费系统项目总结 从2013年5月3日——2013年8月20日历时三个多月的.NET机房收费系统终于完成了.项目做完了,真有一种如释重负的感觉. 下面我将从文档.UML图,代码这三个方 ...
- 小结:VB.NET机房收费系统个人版
经过几天的缝缝补补,自己的个人版最终OK了,!或许是由于有第一次的机房收费系统的经验,这次做,感觉很亲切. 在业务逻辑方面,沿袭曾经的逻辑.做了一点升级.可是修改不大. 在数据库方面,感觉自己从一个小 ...
- VB.NET机房收费系统总结
总感觉这次机房收费系统非常有份量,一直没有下手总结,从2014-7-27至2014-9-29.这中间有太多故事和成长.首先说一下两次机房收费系统的不同,它是我们从面向过程向面向对象的一个转变.在.NE ...
- vb.net机房收费系统之组合查询
我个人一直认为,组合查询是机房收费系统的一个难点,尤其是用到三层之后,如果要为组合查询中的每一个查询建立一个显然是太麻烦了. 下面介绍一下我的方法,对大家起个参考作用. 我将该表中可输入的内容定义为一 ...
- VB.NET<机房收费系统个人重构版>你都学会了什么(之五)
接着上篇我们说的配置文件,今天我们来说一下接口. 1.UML图 2.三层架构 3.Sqlhelper 4.配置文件 5.接口 6.设计模式 什么是接口呢?我们可以将接口理解为用于沟通的中介的抽象化.可 ...
- 【vb.net机房收费系统】之sqlhelper 标签: 数据库 2015-05-17 10:47 819人阅读 评论(15)
在敲机房收费重构版的时候,用到了sqlhelper,当时不知道怎么开始,各种听别人说,张晗说,一定要用sqlhelper,特别好用,我当时没有用balabala~当时一听,哎哎哎,这个高级,要搞一搞, ...
- 【vb.net机房收费系统】之没有包含要从继承的组件的已生成程序集 标签: vb.net继承 2015-05-02 15:19 1012人阅读
在敲到组合查询这个功能的时候,需要用到窗体的继承,但是在新建继承窗体的时候,出现了错误(没有包含要从继承的组件的已生成程序集).如下图: 问题的产生:当时没怎么注意,也不知道怎么弄的,最后反正是继承上 ...
- vb.net机房收费系统之配置文件
总是听到说用反射+配置文件访问数据库,那配置文件到底什么东西? 1.定义: 配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置, ...
- VB.NET版机房收费系统---报表
报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据 ...
随机推荐
- WebForm与MVC模式优缺点(转)
Asp.net Web开发方式,分为两种: 1. WebForm开发 2. Asp.Net MVC开发 MVC是微软对外公布的第一个开源的表示层框架,MVC目的不是取代WebForm开发,只是web开 ...
- OCR Tesseract 识别报 empty page解决办法
图片分辨率太低导致 周边加空白 然后重新操作,就行了
- IntelliJ IDEA 17 创建maven项目
参考博客: https://yq.aliyun.com/articles/111053# 部署服务器时 没有Tomcat Server选项
- java-异常处理1
概要图 异常讲解流程图 一 java 异常和错误层次图 1.1 图1 1.2 图2 二 异常生的过程 1 异常可以结束函数. 同时也让程序结束了. 三 异常和错误的发生和区别 Java运行时期发生的问 ...
- 洛谷P1006 NOIP提高组2008 传纸条
P1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无 ...
- 洛谷P2426 删数 [2017年4月计划 动态规划12]
P2426 删数 题目描述 有N个不同的正整数数x1, x2, ... xN 排成一排,我们可以从左边或右边去掉连续的i(1≤i≤n)个数(只能从两边删除数),剩下N-i个数,再把剩下的数按以上操作处 ...
- Leetcode657.Robot Return to Origin机器人能否返回原点
在二维平面上,有一个机器人从原点 (0, 0) 开始.给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束. 移动顺序由字符串表示.字符 move[i] 表示其第 i 次移动.机器 ...
- spring源码学习之bean的加载(一)
对XML文件的解析基本上已经大致的走了一遍,虽然没有能吸收多少,但是脑子中总是有些印象的,接下来看下spring中的bean的加载,这个比xml解析复杂的多.这个加载,在我们使用的时候基本上是:Bea ...
- 解决WSL上运行plantUML中文乱码问题
生成UML图命令: java -jar plantuml.jar -charset UTF-8 my.txt 1. 保证my.txt 使用uft-8编码 2. wsl中安装中文字体: 如: sudo ...
- leetcode 235-290 easy
235. Lowest Common Ancestor of a Binary Search Tree 公共的祖先必定大于左点小于右点,否则不断递归到合适. class Solution { publ ...