惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
D
DataBreaches.Net
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
Docker
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
Check Point Blog
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
IT之家
IT之家
月光博客
月光博客
U
Unit 42
K
Kaspersky official blog
T
Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
云风的 BLOG
云风的 BLOG
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
Engineering at Meta
Engineering at Meta
Recorded Future
Recorded Future
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Security @ Cisco Blogs
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Schneier on Security
S
Secure Thoughts
The Register - Security
The Register - Security
B
Blog RSS Feed
The Last Watchdog
The Last Watchdog
P
Palo Alto Networks Blog
爱范儿
爱范儿
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
L
LINUX DO - 热门话题
C
Cisco Blogs
Spread Privacy
Spread Privacy
F
Full Disclosure
博客园 - 聂微东
T
The Blog of Author Tim Ferriss

博客园 - 墨尘

xmlhttp的OnReadyStateChange事件 简单的mysql热备 技术之路也要懂得理财-------林左鸣:建设军工强国的5条锦囊妙计 magento迁移后后台无法登录解决方法 Android实用工具Hierarchy Viewer实战 SEO如何做有效的外链 加勒比海盗主题曲 小提琴版 apache 编译 rewrite 模块 linux 下php扩展模块的单独编译 转帖:linux 下注册apache开机自启动 javascript中的对象 - 墨尘 - 博客园 混迹于威客 SQL 2005数据类型说明 转帖:PL/SQL 格式化指南 (PL/SQL Formatting Guide) 趋势投资十种有效工具 关于临界点类型算数问题的分析 逻辑推理 应该在别人恐惧时贪婪吗? 404错误!
简述在Access中使用“存储过程”
墨尘 · 2009-07-09 · via 博客园 - 墨尘

  很多人问起在Access数据库中怎样使用存储过程,其实Access中没有存储过程,我们说的Access中的“存储过程”是指在Access中通过内置的查询表来操作数据,从而大大优化ASP查询的执行速度,下面就简要介绍如何在Access中使用“存储过程”。

例一:首先我们在Access中做一个非常简单的delete查询。

现假设有一个Table1表,我们要删除id<100的所有记录,首先打开Access,在Access左边点击“查询”,

然后选择,“在设计视图中创建查询”,弹出“查询一:选择查询”对话框,关掉“显示表”,在“查询一:选择查询”的标题上点右键,选择“SQL 视图”

在SQL视图中输入sql语句,DELETE FROM Table1 WHERE id<100,

输入完成后点击右边的小叉关闭,会提示保存,将它取名为myDelSQL,然后保存,这时候,Access的查询中就多了一个删除查询的表,

好了,我们在Access中就己经建立了删除查询,现在切换到ASP代码中来了:
在ASP中要操作使用“存储过程”,我们这里就不能用平常的rs.Open sql,1,3来操作了,这时我们要使用ADO中的Commamd命令来操作,其实很简单,就跟我们建立Recordset对象一样,代码如下:

'这儿写打开数据库的conn链接对象,己省略,请跟据自己的实际需要建立conn连接。
dim cmd ' 创建一个变量
set cmd=Server.CreateObject("Adodb.Command") '在服务器上创建Command对象。

cmd.ActiveConnection=conn     ' 将cmd对象绑定到conn连接对象,只有这样才知道是对什么数据库进行操作。
cmd.CommandType=4                ' 设置Command执行命令的格式,4为存储过程,1为普通字符串,可以省略
cmd.CommandText="myDelSQL"   '注意,上面设置的CommandType的值为4,所以这儿直接写上存储过程名就行了,即Access中的查询myDelSQL,如果上面的CommandType设置的为1 ,则这里必须是“select .....”的SQL语句形式。如果上面的CommandType省略,则这里需要写成 "EXECUTE myDelSQL",以说明是执行一个存储过程
cmd.Execute()     '这一行执行Command命令。
set cmd=nothing   '从内存中删除cmd对象

  好了,就这么简单,我们现在就己经可以把这个文件存成asp,然后执行这个asp即可,我们再来打开数据库,发现id>100的记录己被删除!

例二:不带参数的SQL查询都可以用以上方法来操作,下面我们来说一下带参数的查询

现在我们假设要把数据库中的id=50的这条记录删除掉(这个id=50是由asp中带进去的),首先我们仍然需要用上面的方法来在Access中建立查询,只不过我们不能像这样写SQL语句:
DELETE FROM Table1 WHERE id=50
因为我们说过,这个50是由asp带进去的,也就是说它是一个变的量,那么我们改用以下方式来写SQL吧:
DELETE FROM Table1 WHERE id=XXX
(有人会问了,这里的XXX是个什么?数据库中并没有XXX这个字段,Access会把它看作是一个参数。


保存此查询,并给这个查询取名为 myDelSQL2 我们发现虽然XXX并不存在,但它仍然能够保存,你可以现在双击这个 myDelSQL2查询试试,它会提示输入一个参数,如果你输入的是一个有效的ID,那么它就会删除那条记录。

好了,言规正传,现在我们该回到ASP中了。同样用上面的方法,只不过下面多了两条语句,请看:

'这里是打开conn链接对象的代码
dim cmd2

set cmd2=Server.CreateObject("Adodb.Command")
cmd2.ActiveConnection=conn
cmd2.CommandType=4
set prm = Server.CreateObject("ADODB.Parameter")
prm.Name = "id"   
'指明参数对应的名称
prm.Value = 50    
'要删除的记录ID
cmd.Parameters.Append prm
'将参数添加给cmd对象
cmd2.CommandText="myDelSQL2"
cmd2.Execute()
set cmd2=nothing