用存储过程实现ASP对数据库访问

存储过程|访问|数据|数据库

一、ADO概述
ActiveX 数据对象 (ADO) 是一种既易于使用又可扩充的技术,用来将数据库访问添加到您的 Web 页可以使用 ADO 编写简洁和可升级的脚本以连接到与 OLE DB 兼容的数据源,如数据库、电子表格、顺序数据文件或电子邮件目录。OLE DB 是一个系统级的编程接口,它提供一套标准的 COM 接口,用来展示数据库管理系统的功能。使用 ADO 的对象模型,您可以轻松地(使用 VBScript 或 JScript 等脚本语言)访问这些接口并将数据库功能添加到您的 Web 应用程序中。另外,您还可以使用 ADO 访问与开放式数据库互连 (ODBC) 兼容的数据库。
如果您是一位对数据库互连知识有一定了解的脚本编写者,您将会发现 ADO 的命令语法很简单,而且很容易使用。如果您是一位经验丰富的开发人员,您将会非常欣赏 ADO 提供的这种可升级的对各种数据源的高性能访问。
二、访问数据库的一般方法
一般的网页访问中访问数据库是按照下列步骤进行的,首先建立一个ADODB.Connection 接口的对象,接着在这一个对象上绑定相应的数据源(可以用有名数据源和无名数据源),根据需要建立或者不建立记录集,然后在该数据源上链接用执行或打开的方法来对相应的表进行操作。
Asp访问数据库的一般方法:
<
Set oConn=Server.CreateObject(“ADODB.Connection”)
Set oRS=Server.CreateObject(“ADODB.RecordSet”)
set strConn="Provider=SQLOLEDB;User ID=sa; Initial Catalog=Pubs;Data Source=" &request.ServerVariables("SERVER_NAME")
oConn.open strConn
set ORS=oConn.execute(“select * from test”)
>
以上介绍了无名链接的OLEDB的使用方法,如果是有名链接,设为数据源test,用户名和口令均为空,则只需要改写一下上述语句oConn.open “test”,””,””
上面简要介绍了一下对于网页中涉及到数据库访问的一般方法,这些已经是很成熟的,也是很有用的,如果在实际中对于某些数据的存取过于复杂,需要近10条SQL语句才能写完,那么这种方法就有点欠缺,另外有些时候需要使用相同的处理过程,而在不同的网页中使用,而这用存储过程则是最有利的,还有一个最大特点是存储过程对于技术的保密性相对高些,它存储于远端服务器的数据库内。
三、存储过程在ASP中的使用
在ADO中提供了对存储过程的访问,它需要用到command对象,在这个对象上用户可以直接执行SQL服务器的存储过程,而命令中所需要的参数可以借助于其属性Pamaters来进行处理。
注意 一个 Command 对象要想有效,必须和一个 Connection 对象相关联,方法是Command 对象的 ActiveConnection 属性就被设置到这个 Connection 对象。如果一个 Connection 对象不能被标识,在您将它与一个连接关联之前,Command 对象是无效的。
< Dim oConn
Dim strConn
Dim oCmd
Dim oRs,ors1
dim aa
dim sql
Set oConn = Server.CreateObject("ADODB.Connection")
set oCmd = Server.CreateObject("ADODB.Command")
set ors1=Server.CreateObject("ADODB.RecordSet")
' 打开链接,使用用户标识SA,口令为空,连接为本地服务器上的数据库
strConn="Provider=SQLOLEDB;User ID=sa;Initial Catalog=pubs;Data Source="& Request.ServerVariables("SERVER_NAME")
'如果连接一个远端的数据库,该数据库地址为:10.82.88.105,用户为tmp,口令为123,
‘则可用下面的方法
‘ strConn="Provider=SQLOLEDB;User ID=tmp;pwd=123;Initial Catalog=tjbb;Data Source="& "10.82.88.110"
oConn.Open strConn
‘将建立的链接添加到命令的活动链接属性中
Set oCmd.ActiveConnection = oConn
' 设置调用存储过程byroyalty和参数,参数由?引入
oCmd.CommandText = "{call byroyalty(?)}"
oCmd.Parameters.Append oCmd.CreateParameter("@Percentage", adInteger, adParamInput)
' 提供输入的参数
oCmd("@Percentage") = 75
‘在asp中上述输入参数的使用也可不用参数属性来实现直接用VB中的&来形成命令文本中对应的数据即可
‘参数的使用在输出时是特别有用的
Set oRs = oCmd.Execute
ors1.activeconnection=oconn
‘该命令对象中也可应用一般的SQL语句使用Source和open属性,其中source指出数据源
ors1.source ="select * from [tmptable] where 年份=2000 and 月份=1"
ors1.cursortype=adopenstatic
ors1.open
>
四、在SQL中的存储过程简介
利用SQL的语言可以编写对于数据库访问的存储过程,其语法如下:
CREATE PROC[EDURE] procedure_name [;number]
[
{@parameter data_type} [VARYING] [= default] [OUTPUT]
]
[,...n]
[WITH
{
RECOMPILE
| ENCRYPTION
| RECOMPILE, ENCRYPTION
}
]
[FOR REPLICATION]
AS
sql_statement [...n]
[ ]内的内容是可选项,而()内的内容是必选项,
例: 若用户想建立一个删除表tmp中的记录的存储过程Select_delete可写为:
Create Proc select_del As
Delete tmp
例:用户想查询tmp表中某年的数据的存储过程
create proc select_query @year int as
select * from tmp where year=@year
在这里@year是存储过程的参数
例:该存储过程是从某结点n开始找到最上层的父亲结点,这种经常用到的过程可以由存储过程来担当,在网页中重复使用达到共享。
空:表示该结点为顶层结点
fjdid(父结点编号)
结点n 非空:表示该结点的父亲结点号
dwmc(单位名称)
CREATE proc search_dwmc @dwidold int,@dwmcresult varchar(100) output
as
declare @stop int
declare @result varchar(80)
declare @dwmc varchar(80)
declare @dwid int
set nocount on
set @stop=1
set @dwmc=""
select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold
set @result=rtrim(@dwmc)
if @dwid=0
set @stop=0
while (@stop=1) and (@dwid<>0)
begin
set @dwidold=@dwid
select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold
if @@rowcount=0
set @dwmc=""
else
set @result=@dwmc+@result
if (@dwid=0) or (@@rowcount=0)
set @stop=0
else
continue
end
set @dwmcresult=rtrim(@result)
充分合理地利用存储过程,可以提高服务器吞吐能力,笔者利用存储过程来从近20个表中获取数据组合成一个通用的表,产生近2万条记录,而所需时间约7秒钟,如果这种操作借助于较合理的动态网页可以将服务器开发提高到一个高度,充分利用存储过程,可以减轻网页设计带来的繁重处理,而使所编写的代码得到共享和合理的利用,并将代码藏于服务器的数据库内部,使得一些技术得到的保密,这也是存储过程的一大特色,希望读者能从中得到启益。

转自: http://goaler.xicp.net/ShowLog.asp?ID=504

时间: 2024-09-22 22:18:32

用存储过程实现ASP对数据库访问的相关文章

asp.net 数据库访问组件支持Using

调用代码         private void testusing()         {             using (idbhelper dbhelper = new sqlhelper(basesysteminfo.usercenterdbconnection))             {                 dbhelper.executenonquery(" select getdate() ");             }         } 源

运用ASP调用数据库中视图及存储过程

存储过程|视图|数据|数据库 一.前言 ASP (Active Server Pages) 是服务器端的脚本编写环境,它由微软公司的IIS3.0以上版本支持.它可用来创建动态 Web 页或生成功能强大的 Web应用程序.ASP页是包括 HTML 标记.文本和脚本命令的文件.ASP页可调用ActiveX组件来执行任务,例如连接到数据库或进行商务计算.通过ASP,可为您的Web页添加交互内容或用HTML页构成整个Web应用程序,这些应用程序使用HTML页作为您的客户的界面. 二.ASP模型 浏览器从

ASP.NET对SQLServer的通用数据库访问类_实用技巧

本文模仿实现数据库访问的通用类,代码清晰,而且很实用,包括了对数据库的所有的常用的操作. /// <summary> /// 数据库访问通用类 /// </summary> public class SqlHelper { private string connectionString; /// <summary> /// 设定数据库访问字符串 /// </summary> public string ConnectionString { set { con

ASP.NET中修改删除DataGrid行—数据库访问

asp.net|datagrid|访问|数据|数据库 创建一个WEB页面,命名为:Add.aspx. Add.aspx代码: <%@ Page language="c#" Codebehind="Add.aspx.cs" AutoEventWireup="false" Inherits="TeachShow.Charpter7.AccessDataBase.Add" %> <!DOCTYPE HTML PUB

在ASP程序中访问Access数据库

access|程序|访问|数据|数据库          在基于微软IIS/PWS的网络平台上,通过服务器端运行的ASP程序来访问后台数据库,是一种最常见的模式了.而对于小型的数据库应用需求,微软的Access数据库,应该是与ASP程序配套使用的首选.由于Access数据库的ODBC驱动程序支持的SQL指令全,执行效率高,所以Access后台数据库+ASP服务器端程序+客户端IE浏览器,是一个精练实用高效的组合模式.         在这种使用模式中,ASP程序无疑是最重要的,是沟通客户端和后台

(ASP.NET)修改和删除DataGrid行——数据库访问

asp.net|datagrid|访问|数据|数据库 (ASP.NET)修改和删除DataGrid行--数据库访问 本程序涉及到数据库的添加,修改和删除操作. 懒得写了,把界面贴出来,照着界面画就可以了.本例数据库:SqlServer2000附带的pubs数据库,看一下连接字符串就很清楚了.如果要在本机器上运行,把uid和pwd改成你自己SQL登陆用户名和密码. 创建一个WEB页面,命名为:Add.aspx. 界面设计如图: Add.aspx代码: <%@ Page language="c

ASP.NET/Perl.NET 数据库访问例子

asp.net|perl|访问|数据|数据库 ASP.NET/Perl.NET Database Access ExampleOne of the features of the .NET framework is its ability to handle multiple languages. Third party compiler vendors can create and implement a compiler targeted for the .NET runtime. In f

sqlserver-怎么把 文章上传到数据库中或者怎么在asp.net中访问数据库中已有的文章

问题描述 怎么把 文章上传到数据库中或者怎么在asp.net中访问数据库中已有的文章 怎么把 文章上传到数据库中或者怎么在asp.net中访问数据库中已有的文章

ASP.NET 系统支持数据库访问设计

系统设计时,往往要考虑到兼容多种数据库,拿常见的三种数据库:SqlServer,MySql,Oracle为例,常见的三层设计可以分为:业务逻辑层,数据访问层,实体层:他们的结构大致如下: 三种数据库对应有三套数据库访问类,为了方便组织代码,往往将读写一种数据库的类放到对应命名的文件夹下,代码结构大概如下: 业务逻辑层: 以上面的代码为例,业务逻辑层要调用数据访问层时,可以这样来实例化数据库访问对象:var db = DbFactory.GetService<IAdministrator>();