首页 > 代码库 > 存储过程
存储过程
任何一个好的数据库,基本上都离不开存储过程。在学习使用存储过程的时候,这句话总是伴随着那些巨人的思想。
究竟什么是存储过程,存储过程怎么用,存储过程又给数据库带来了什么好处呢?
……呃,蒜了吧,今天没网,我就不引用一些官方的话了。
首先来说说平时咱们是如何访问数据库的(这仅对我们这级别的小菜说):
1.创建数据库连接对象(顺便把数据库连接字符串放进去)——sqlconnection
2.连接数据库——conn.open()
3.创建能够执行sql语句的对象执行sql语句——sqlcommand
这是三步走,但是这样的话,如果有一天要对SQL语句进行修改,而软件已经发布了,这该怎么办呢?
那么大家试试存储过程吧,存储过程就是把SQL语句写在数据库那边,不管软件有没有发布,你想什么时候改都可以的,这样是不是更好维护了呢?那肯定的呗!而且这又减少了给程序猿带来的一些负担了,因为如果SQL语句写在代码里面,要是写错了,那么软件运行测试的时候还得去调试改改,但是要是用存储过程,保存的时候正确就正确,错误就执行不了,多方便啊,而且有时候你需要进行复合查询,还得写一串老长的SQL语句,在代码里看着就受不了。还有的就是你要只行某个业务,但是这个业务需要调取好几张表进行查询等操作,你可能要调用好几个类,这几个类分别负责访问某个表,这样多麻烦啊,那就用用存储过程吧,你只要提前把需要查询的哪几张表的几条SQL语句都写好了,到时候只需调用一个类,而且很大窜的SQL语句都不用写了,直接调用存储过程就行了。下面我们就试试存储过程吧!
首先我们要创建一个存储过程
create procedure Pro_Checkout --创建名字为“pro_Checkout”的存储过程 @UserName varchar(20) --在存储过程里面要传进来的一个参数 as begin --要执行的语句 update Balance_Info set CheckoutStatus ='已结账' whereUserName=@UserName and CheckoutStatus ='未结账' update Recharge_Info set CheckoutStatus ='已结账' whereRechargeUser =@UserName and CheckoutStatus ='未结账' update BackBalanceRecord_Info setCheckoutStatus ='已结账' whereBackCardTeacher =@UserName and CheckoutStatus ='未结账' end
使用存储过程访问数据库前两步跟之前的一样:
Dim DBConectStr As NewConnectStringDAL '数据库连接字符串类 Dim DBConnection As NewSqlConnection(DBConectStr.ConnectString) '创建数据库连接对象并初始化 Dim Result As String DBConnection.Open() '连接数据库
第三步,其实就是把原来的第二部中的SQL语句部分换成存储过程的名字
原来:Dim CmdAsNewSqlCommand(SQLstring,DBConnection) ‘定义并初始化sqlcommand
换成存储过程:DimCmdAs NewSqlCommand("Pro_Checkout",DBConnection) ‘定义并初始化sqlcommand
然后得告诉sqlcommand对象我们用的是存储过程,如果不说,他会默认的是以为用的是之前的方法,就把你的存储过程名字当作是SQL语句了。如下:
<span style="white-space:pre"> </span>Cmd.CommandType= CommandType.StoredProcedure '选择存储过程
然后把参数放进去,这里的参数的意思就是你要查询某字段的内容。
<span style="white-space:pre"> </span>Dim SQLParm AsNewSqlParameter("@UserName",SqlDbType.VarChar, 20) '添加参数 <span style="white-space:pre"> </span>SQLParm.Value = http://www.mamicode.com/UserName '给参数赋值>这样执行之后,在第三步就会调用你刚才写好的存储过程了。
如果是远程访问数据库,这样不就减少了网络流量吗?还更加容易维护,代码看着正简洁了!从数据库的角度来看,存储过程是视线编译好的代码,所以每次执行就不用再进行编译了,这样查询起来就少用了些间和系统的开销,提高了查询效率。
这样,是不是很方便呢?那肯定的呗!