ASP存储过程应用全接触

作者:AppleBBS 来源:博客园 时间:2007-08-18 14:28:00 

内容摘要:ASP与存储过程(Stored Procedures)的文章不少,但是我怀疑作者们是否真正实践过。我在初学时查阅过大量相关资料,发现其中提供的很多方法实际操作起来并不是那么回事。花了一天的时间,终于把我对于在ASP中调用存储过程的一些粗浅的经验形成了文字。这其中,有些是我只知其果而不明其因的,有些可能是错误的,但是,这些都是经过我亲身实践的。各位看官批判地接受吧。有不同意见,希望一定向我指明,先谢了。

  现在,我基本上通过调用存储过程访问SQL Server,以下的文字都是实践的总结,希望对大家能有帮助。

  存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。

  定义总是很抽象。存储过程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL Server)。如果我们通过创建存储过程以及在ASP中调用存储过程,就可以避免将SQL语句同ASP代码混杂在一起。这样做的好处至少有三个:

  第一、大大提高效率。存储过程本身的执行速度非常快,而且,调用存储过程可以大大减少同数据库的交互次数。

  第二、提高安全性。假如将SQL语句混合在ASP代码中,一旦代码 * ,同时也就意味着库结构 * 。

  第三、有利于SQL语句的重用。

  在ASP中,一般通过command对象调用存储过程,根据不同情况,本文也介绍其它调用方法。为了方便说明,根据存储过程的输入输出,作以下简单分类:

  1. 只返回单一记录集的存储过程

  假设有以下存储过程(本文的目的不在于讲述T-SQL语法,所以存储过程只给出代码,不作说明):


/*SP1*/
CREATE PROCEDURE dbo.getUserList
as
set nocount on
begin
select * from dbo.[userinfo]
end
go 


  以上存储过程取得userinfo表中的所有记录,返回一个记录集。通过command对象调用该存储过程的ASP代码如下:


’**通过Command对象调用存储过程**
DIM MyComm,MyRst
Set MyComm = Server.CreateObject("ADODB.Command")
MyComm.ActiveConnection = MyConStr ’MyConStr是数据库连接字串
MyComm.CommandText = "getUserList" ’指定存储过程名
MyComm.CommandType = 4 ’表明这是一个存储过程
MyComm.Prepared = true ’要求将SQL命令先行编译
Set MyRst = MyComm.Execute
Set MyComm = Nothing 


  存储过程取得的记录集赋给MyRst,接下来,可以对MyRst进行操作。

  在以上代码中,CommandType属性表明请求的类型,取值及说明如下:

  -1 表明CommandText参数的类型无法确定
  1 表明CommandText是一般的命令类型
  2 表明CommandText参数是一个存在的表名称
  4 表明CommandText参数是一个存储过程的名称

  还可以通过Connection对象或Recordset对象调用存储过程,方法分别如下:



’**通过Connection对象调用存储过程**
DIM MyConn,MyRst
Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.open MyConStr ’MyConStr是数据库连接字串
Set MyRst = MyConn.Execute("getUserList",0,4) ’最后一个参断含义同CommandType
Set MyConn = Nothing
’**通过Recordset对象调用存储过程**
DIM MyRst
Set MyRst = Server.CreateObject("ADODB.Recordset")
MyRst.open "getUserList",MyConStr,0,1,4
’MyConStr是数据库连接字串,最后一个参断含义与CommandType相同 

标签:存储过程,ASP,SQL,Server
0
投稿

猜你喜欢

  • 如何编写一个基于WEB的文件查询系统?

    2009-11-08 18:55:00
  • img标签中alt和title属性的正确使用

    2008-01-10 12:59:00
  • Javascript调用XML制作连动下拉框

    2007-09-17 12:55:00
  • IE和Firefox的js兼容性整理

    2007-11-21 19:40:00
  • INSERT INTO SELECT语句与SELECT INTO FROM语句的一些区别

    2012-06-06 19:38:28
  • 30个最常用css选择器解析

    2011-06-16 20:36:37
  • 如何检测用户第一次访问我的网站并显示友好信息?

    2009-11-25 20:33:00
  • 淘宝首页代码调整

    2011-04-22 12:44:00
  • SQL Server 2000数据库FOR XML查询概述

    2008-12-09 14:49:00
  • asp中判断服务器是否安装了某种组件的函数

    2011-02-16 10:53:00
  • dl+ol应用

    2008-06-21 17:04:00
  • DateDiff函数在Sql与Access中的区别

    2009-06-04 18:02:00
  • oracle sys_connect_by_path 函数 结果集连接

    2009-07-12 18:48:00
  • MySQL Group By用法

    2012-01-05 19:05:14
  • 如何实现在下拉菜单里输入文字?

    2010-06-03 10:31:00
  • 全面了解CSS内置颜色(color)值

    2008-11-19 12:26:00
  • ORACLE常见错误代码的分析与解决(三)

    2010-07-31 12:45:00
  • 高效地获取XMLhttp对象

    2010-01-19 13:49:00
  • Web设计的成就感

    2009-09-04 19:02:00
  • 如何用我的国际域名做虚拟域名?

    2010-06-16 09:53:00
  • asp之家 网络编程 m.aspxhome.com