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
投稿

猜你喜欢

  • Python实现的最近最少使用算法

    2022-07-10 22:48:27
  • python3.4用函数操作mysql5.7数据库

    2024-01-13 01:08:40
  • mysql之innodb的锁分类介绍

    2024-01-27 00:50:10
  • mysql数据库密码忘记解决方法

    2024-01-16 11:52:23
  • kali中python版本的切换方法

    2022-03-03 17:53:45
  • Python机器学习性能度量利用鸢尾花数据绘制P-R曲线

    2023-01-27 20:55:48
  • php设计模式之适配器模式实例分析【星际争霸游戏案例】

    2024-05-11 09:55:05
  • python3之Splash的具体使用

    2023-06-27 05:26:06
  • Python控制线程和函数超时处理

    2023-12-18 05:47:48
  • Python数据可视化:幂律分布实例详解

    2021-08-23 16:27:29
  • ECMAScript6函数默认参数

    2024-05-13 09:18:24
  • JAVA正则表达式匹配多个空格的解决方案

    2022-07-29 14:39:31
  • 利用pandas合并多个excel的方法示例

    2021-05-28 00:02:00
  • Python for Informatics 第11章 正则表达式(一)

    2021-01-27 06:43:43
  • JavaScript随机打乱数组顺序之随机洗牌算法

    2024-05-03 15:33:00
  • vue-cli中使用高德地图的方法示例

    2024-04-27 16:09:39
  • jquery弹出层背景变暗 Lee dialog

    2008-08-18 13:11:00
  • 使用Keras预训练模型ResNet50进行图像分类方式

    2022-04-02 22:57:21
  • Ubuntu安装Jupyter Notebook教程

    2021-03-12 03:14:58
  • 认识那些被忽略的SQL Server注入技巧

    2009-01-20 13:15:00
  • asp之家 网络编程 m.aspxhome.com