可以说存储过程这个词真的是我的一段学习经历的见证,还记得当初在学习ASP的时候, 我只会用简单的SQL语句来写程序,那个时候一边学ASP,一边给你一个不太大的公司做一个网站,公司是一个经营长江运输的物流企业,以前他们公司主页是静态的,发布新闻什么的,都很麻烦,公司没有人会做,只能把消息做成HTML挂上去,我有机会得到了这个小项目,用ASP实现新闻发布,还有人力资源交流平台的开发。可以说那个时候各个功能都实现了,但是完全没有考虑到安全性,比如最长见的SQL注入攻击,我都没有注意到,幸好是一个小的公司,没有什么太重要的信息。要不然后果可能会很严重。先来看看我那个时候是怎么写代码的吧!

我和存储过程strSQL = "SELECT Count(*) FROM Admin WHERE username = '"&strUserName&"' AND password = '"&strPwd&"'"
我和存储过程
set rs = SERVER.CreateObject("ADODB.RecordSet")
我和存储过程rs.open conn,strSQL,
1,1
什么是注入攻击呢,strUserName和strPwd是从用户那里得来的输入,并没有做太多的检验,如果用户输入下面的用户名:'OR 1=1-- 这样的话,不需要用户名用密码都可以通过验证。所以,那个时候可以说真的是初涉江湖没有经验啊。
    后来,从书上看到有存储过程这样的东东,很是好奇,但是并不能知道它的原理,也被它复杂的用法所困惑。直到最近开发一个实验室的管理系统时,才觉得用存储过程的好处,而在.NET中可以把数据库企业管理器做的事都搬到了VS.net 2003中了,这样既直观又方便,着实让我兴奋了一把。现在我刚刚偿到了用存储过程的甜头,下面就自己的一些体会,谈谈存储过程的好处。
    存储过程是概念我不说了,哪都有。为什么用存储过程,
    一:存储过程比直接在你的程序中执行单个的SQL语句更有效。
    二:由于存储过程可以混合使用SQL语句和控制语句的形式书写,你可编写复杂的存储过程,它们工作起来
            就像子程序一样,如同子程序,存储过程可以包含参数,这使得它们比临时构造的SQL语句更灵活。另
            外NET平台还提供了,DataReader,DataSet这样的数据结构,可以很好的返回结果。
   三:存储过程具有接口一致的独立性,我们可以改变存储过程的内部代码,而不用修改应用程序。
   四:安全。这也是我刚开始提到的,用存储过程可以加强代码的安全性。
   五:另外,存储过程配合各种控件,还可以方便的做出各种特殊的功能,下面我会举这样一个例子。

好了,说了这么多,可能有些啰嗦,但是,只有一个目的,那就是希望你爱上存储过程,并且尽可能早的使用它,而不像我,直到现在才发觉它的美!下面看一个用存储过程实现DataGrid控件分页显示的例子。

问题:大家都知道DataGrid控件提供了自动分页显示的功能,但是随着我们数据量的加大,这种分页机制的效率就打上问号了。好在,ASP.NET为我们自己定义分页提供了接口,所以我们所要做的就是:自己构造数据集。最好的方法便是存储过程。下面是做法:
    1:启用定制分页:
        
我和存储过程<asp:datagrid runat="server" id="grid"
我和存储过程 AllowPaging
="true"
我和存储过程 AllowCustomPaging
="true"
我和存储过程 OnPageIndexChange
="PageIndexChanged">
  
    2:分页处理函数:
}
   3:构造数据集,下面是相应的存储过程:
我和存储过程CREATE PROCEDURE dbo.SelectSubRecords
 

这样就可能按照自己的要求去实现分页显示了,而且还可以避免因为删除操作而在表中留下的ID空穴对记录显示的影响。
  这个例子只是一点,我想存储过程的妙用还不至于此,对于视图也是一个很好的工具,下次有机会,我也一定总结出来。希望我的数据库知识能够不断的进步,现在正在上数据库原理,把理论与实践很好的结合,我想是我现在所要做的工作,呵呵,好了,女朋友叫我下去打羽毛球,明天她要比赛,没办法,只好当陪练了!

相关文章:

  • 2021-11-28
  • 2022-12-23
  • 2022-12-23
  • 2021-12-21
  • 2021-10-10
  • 2021-11-03
  • 2021-05-22
猜你喜欢
  • 2022-12-23
  • 2021-12-21
  • 2022-12-23
  • 2022-02-24
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案