探索--SQL存储过程(一)
来源:互联网 发布:acg音乐知乎 编辑:程序博客网 时间:2024/05/19 17:58
在之前学SQL Server的时候学到了存储过程,当时只知道存储过程是什么,但是没有用过,从12年的8月份开始到现在,经过了很久的时间才对存储过程有了一点自己的理解,下面分享一下:
首先,要想什么是存储过程?存储过程简单来说就是为以后的使用而保存的一条或多条SQL语句的集合,可以将它简单的想做批文件(但是比批文件强大的多)
然后,要想为什么要使用存储过程?就是使用存储过程之后有什么优点?第一:它把处理封装在容易使用的单元中,能简化复杂的操作;第二:因为少了重复的复杂操作,保证了数据的一致性,防止错误.第三:因为存储过程是封装的处理操作,如果表名或列名,业务逻辑变化了,那么只需要更改存储过程的代码,使用它的人员不需要改变其他的代码;第四:因为存储过程通常以编译过的形式存储,所以DBMS为处理命令所做的工作较少,因此提高了性能;概括来说:简单、安全、高性能。
我们举个我们熟悉的机房收费系统中,插入上机记录的存储过程简单的小例子,体会一下存储过程的使用,如下:
先在DBMS中创建存储过程,我们用的Microsoft SQL Server,代码如下:
CREATE PROCEDURE PROC_InsertUpRecord @cardno INTEGER,@name varchar(50),@room varchar(50),@comment varchar(50)ASINSERT INTO T_UpRecord(CardNo ,Name ,[UpDate] ,UpTime ,Room ,Comment )VALUES(@cardno ,@name,CONVERT(varchar(100), GETDATE (), 23),GETDATE (),@room ,@comment )
以上代码是写在SQL Server中的,那么我们写好了存储过程,如何在VS中调用呢?我们来实践一下,因为我们需要的参数都是从界面层传回来的,B层写的是逻辑,D层是数据层,我们把代码写在了D层:
'********************************************* '说明:此函数用来向上机表中插入记录'创建日期:2012-12-30 '版本:1.0 '******************************************** Public Sub InsertUpRecord(mUpRecord As Model.UpRecord, mStuInfo As Model.StuInfo) '传参 Dim params() As SqlParameter = {New SqlParameter("@cardno", mStuInfo.CardNo), New SqlParameter("@name", mStuInfo.Name), New SqlParameter("@room", mUpRecord.Room), New SqlParameter("@comment", mUpRecord.Comment)} '调用Update方法执行 Call dExecute.Update("PROC_InsertUpRecord", params) End Sub
因为Update方法很常用所以把它抽出来,我们看Update方法:
'********************************************* '作者:*** '说明:此函数用来修改数据库表的选定记录 '创建日期:2012-12-23 '版本:1.0 '******************************************** Public Sub Update(strProName As String, params() As SqlParameter) '连接数据库 Dim cn As New SqlConnection cn.ConnectionString = "Server=.;DataBase=CRCS;UID=sa;pwd=123456" cn.Open() '传递参数并执行 Dim cmd As New SqlCommand cmd.Connection = cn cmd.CommandText = strProName cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.AddRange(params) cmd.ExecuteNonQuery() cn.Close() End Sub
update方法其实就是连接数据库,并执行操作的一个方法。
下面想一想,如果我们不用存储过程,代码应该怎么写?
'********************************************* '作者:*** '说明:此函数用来向上机表中插入记录 '创建日期:2012-12-30 '版本:1.0 '******************************************** Public Function InsertUpRecord(mUpRecord As Model.UpRecord, mStuInfo As Model.StuInfo) '定义SQL字符串 Dim strSQL As String strSQL = "insert into T_UpRecord values(" & " '" & mStuInfo.CardNo & "'" & "," & "'" & mStuInfo.Name & "'" & "," & "'" & mUpRecord.Update & "'" & "," & "'" & mUpRecord.UpTime & "'" & "," & "null" & "," & "null" & "," & "null" & "," & "null" & "," & "'" & "正在上机" & "'" & ")" '调用Update执行操作 Call Update(strSQL) End Function
比较一下两种代码,体会一下上面所说的存储过程的优点。现在是小系统感觉可能没那么明显,但是如果是大系统呢?不用存储过程的话,我们需要写N多条SQL语句,每次用的时候都要执行,那么可想而知,效率不高,而且直接输入字符串的话,一些符号经常容易出错,比如单引号等;但存储过程是以编译过的形式存储,所以DBMS为处理命令所做的工作较少,效率大大的提高,并且可以减少出错的几率;如果表中字段的名称更改了,不用存储过程的话需要改VS中的代码,不容易修改,但是用存储过程的话,只需要修改存储过程的代码就可以搞定了。
如此,我们实现了存储过程在vs中最基础的调用。关于存储过程,这只是冰山一角,存储过程的知识还有很多,正在一步步探索前进的道路!
- 探索--SQL存储过程(一)
- SQL Server 存储过程(一)
- SQL数据库存储过程(一)
- SQL Server 浅析存储过程(一)
- ----------------SQL常用存储过程(一)--------------------
- SQL SERVER存储过程学习笔记(一)
- sql存储过程几个简单例子(一)
- Hive存储过程HQL/SQL(一)–hplsql命令行
- sql存储过程几个简单例子(一)
- 存储过程(一)
- 存储过程(一)
- 存储过程(一)
- 存储过程(一)
- 存储过程(一)
- pl/sql笔记一:创建存储过程
- SQL存储过程学习笔记(一)
- 图解SQL Server 存储过程教程一
- MS SQL之存储过程一
- AJAX简单入门
- 谷歌,火狐链接无法点击
- windows api 大全
- java超时控制
- 分布式处理框架 hadoop 和 storm
- 探索--SQL存储过程(一)
- mysql连接查询 左,右,内连接
- sql find out record one-to-one
- 倒排索引
- 2013年新年目标
- elf文件动态加载
- Hibernate一级缓存,二级缓存
- 海量数据的处理笔记
- python subprogress子进程实时输出