仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 456|回复: 7
打印 上一主题 下一主题

[学习教程] ASP网页编程之在 Access 中利用“存储历程”

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-16 23:09:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。access|存储历程因为片上传成绩以是图片没有显现:
完全文章请看:http://www.luckybbs.com/showAnnounce.asp?id=36487
我们已熟习在ASP中经由过程挪用SQLServer存储历程来实行数据库操纵,不外人人是不是晓得,在桌面级数据库Access中,我们也可以创立并利用“存储历程”?

Access+ASP是开辟轻量级Web使用程序的尽佳组合:复杂,疾速,兼容性好,可是功能一般不高。而且,用ADODB.Connection和Recordset工具来实行SQL语句的体例,也有一些不便利,由于带参数的SQL语句的参数值也经常是拼接到字符串中,因而便有了诸如“单引号成绩”如许的贫苦。利用存储历程的一个优点就是,撑持SQL语句参数值的别的供应。

现实上,Access(2000及以上版本)中所谓“存储历程”,和SQLServer中的StoredProcedure是不克不及比的。它只能算是“StoredProcedureLite”,不撑持多条SQL语句,不撑持逻辑语句(呵呵,究竟不是T-SQL)等等,我也还不分明它是否是预编译了。不外,正好像VBScript完成的所谓“类”仅仅具有封装性,关于代码布局的“丑化”和程序重用性具有很年夜增进一样,Access的“轻量存储历程”,关于标准,小堕落概率的数据库操纵应当也有匡助,而且功能大概会有进步。

上面我译stepbystep的体例,先容怎样在Access中创立存储历程,然后在ASP程序中利用它。

(一)在Access中创立“存储历程”

不晓得人人的Access使用程度怎样,归正它关于我来讲,仅仅就是一个MDB数据库文件的创立工具,我只会新建MDB文件,然后在Access的界面中创立表,索引,束缚等等,over~

Access中的“查询”,就饰演了存储历程的脚色。下文中我提到的Access的“存储历程”大概“查询”都是指这个器材

关于“查询”的创立,Access供应了一个傻瓜工具,相似VS.NET里边创建DataAdapter时的导游。不外我喜好间接写SQL代码

好,上面先看看我们这个复杂的例子中所利用的数据库的表布局。

此主题相干图片

然后在Access主界面上点击左边的“查询”按钮,再在右侧双击“在计划视图中创立查询”,以翻开查询计划视图。
此主题相干图片

这时候弹出的是可视化的查询天生器,我们起首增加SQL语句必要触及的表。
此主题相干图片

增加表以后,在计划视图上点击鼠标右键,选择“SQL视图”,以切换到SQL代码编纂窗口。
此主题相干图片

好,上面说说Access的存储历程的特性。

Access的查询,我今朝的感到是对SQL语句的一个包装,也许举行了某种优化如预编译。我们不克不及像写SQLServer存储历程那样利用多重操纵,事件,逻辑判别,轮回等等……

可是我们利用Access存储历程的次要目标,就是利用参数分外供应的查询,利用存储历程,我们不用再面临将参数值拼接到SQL语句字符串中时碰到的各类贫苦,好比:


代码:
Dimsql
sql="SELECT*FROMUsersWHEREUserName="&userName&""


以上代码中,假如字符串变量userName中含有“”单引号,则会报错。我们必需手工转化:


代码:
Dimsql
sql="SELECT*FROMUsersWHEREUserName="&Replace(userName,"","")&""转化为一连两个单引号


而利用带参数查询,我们的SQL语句能够写为:


代码:
Dimsql
sql="SELECT*FROMUsersWHEREUserName=@userName"


然后把参数@userName的值以Command工具的Parameter属性来传进便可,很便利直不雅。


代码:
Withcmd
创立参数工具
.Parameters.Append.CreateParameter("@userName")

给各参数指定值
.Parameters("@userName")=userName
EndWith

这里还要申明Access存储过程当中参数的利用。和SQLServer的存储过程当中用@变量指定参数,然后同名传进参数工具分歧,Access中的参数,是以“按次”而非“名字”来辨认的。传进的参数无需指命名字,任意起,SQL中的参数名字也能够任意起,只需传进参数值时,依照SQL语句中的参数呈现按次指定就好了。一般,我们利用Command工具的Execute办法,间接传进参数值数组来实行~

代码:
cmd.Execute,Array(userName)

再好比,你的一个Access存储历程这么写:

代码:
select*fromUserswhereUserName=p_UserNameandBookTitle=p_bookTitle

你能够就这么实行,经由过程传进参数值数组,可是按次要对应:

代码:
cmd.Execute,Array(userName,bookTitle)

OK,看看我们的例子中利用的两个查询,一个是写进数据。写好SQL语句后保留并定名。

此主题相干图片

(二)利用存储历程

然后我们能够在ASP程序中挪用这些存储历程了。

这里能够看到为何我说Access中的查询就是它的存储历程――我们的Command工具的CommandType属性设置的是4,即StoredProc!

so...

以下的代码很复杂:


代码:
<%
OptionExplicit

Dims
Randomize
s=Rnd*100

Dimconn,cmd
Setconn=Server.CreateObject("ADODB.Connection")
Setcmd=Server.CreateObject("ADODB.Command")

conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("sp.mdb")

Withcmd
.ActiveConnection=conn
.CommandType=&H0004存储历程
.CommandText="AddNewData"
EndWith

cmd.Execute,Array(CStr(Now()),CSng(s))

Withcmd
.ActiveConnection=conn
.CommandType=&H0004存储历程
.CommandText="GetData"
EndWith

DimresultRS,resultArray
SetresultRS=cmd.Execute(,Null)

IfNotresultRS.EOFThen
resultArray=resultRS.GetRows()
EndIf

SetresultRS=Nothing
Setcmd=Nothing
conn.Close
Setconn=Nothing

Response.Write"<ul>"
Dimi
Fori=0ToUBound(resultArray,2)
Response.Write"<li>"&resultArray(0,i)
Response.Write""&resultArray(1,i)
Response.Write""&resultArray(2,i)
Response.Write"</li>"
Next
Response.Write"</ul>"
%>



运转了局。
此主题相干图片

感到起来,速率仿佛很快,呵呵~

不晓得如许在Access中利用存储历程的意义年夜不年夜,不外的确很好玩

A</p>问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.
乐观 该用户已被删除
沙发
发表于 2015-1-20 07:44:15 | 只看该作者
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
老尸 该用户已被删除
板凳
发表于 2015-1-29 05:12:11 | 只看该作者
ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
第二个灵魂 该用户已被删除
地板
发表于 2015-2-6 17:45:23 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
山那边是海 该用户已被删除
5#
发表于 2015-2-17 20:45:02 | 只看该作者
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
因胸联盟 该用户已被删除
6#
发表于 2015-3-5 22:43:52 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
精灵巫婆 该用户已被删除
7#
发表于 2015-3-12 16:30:03 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
蒙在股里 该用户已被删除
8#
发表于 2015-3-19 23:56:35 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-3 21:12

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表