查看完整版本: 在 Access 中使用“存储过程”

豹子 2007-6-23 09:47

在 Access 中使用“存储过程”

我们已经熟悉在 ASP 中通过调用 SQL Server 存储过程来执行数据库操作,不过大家是否知道,在桌面级数据库 Access 中,我们也能够创建并使用“存储过程”?3yt&ftBpi-?\
Access   ASP 是开发轻量级 Web 应用程序的绝佳组合:简单,快速,兼容性好,但是性能通常不高。并且,用 ADODB.Connection 和 Recordset 对象来执行 SQL 语句的方式,也有一些不方便,因为带参数的 SQL 语句的参数值也常常是拼接到字符串中,于是便有了诸如“单引号问题”这样的麻烦。使用存储过程的一个好处就是,支持 SQL 语句参数值的另外提供。u ?(K}![,q8zG z
X R}~0U
  事实上,Access(2000 及以上版本)中所谓“存储过程”,和 SQL Server 中的 Stored Procedure 是不能比的。它只能算是“Stored Procedure Lite”,不支持多条 SQL 语句,不支持逻辑语句(呵呵,毕竟不是 T-SQL)等等,我也还不清楚它是不是预编译了。不过,正如同 VBScript 实现的所谓“类”仅仅具有封装性,对于代码结构的“美化”和程序重用性具有很大促进一样,Access 的“轻量存储过程”,对于规范,小出错几率的数据库操作应该也有帮助,并且性能可能会有提高。^*t&_?4wl H
4Z ]0K(k o'n+jl c
  下面我译 step by step 的方式,介绍如何在 Access 中创建存储过程,然后在 ASP 程序中使用它。H7Ix(o5V,k:m*p

%g+e.jbL`B   [b](一)在 Access 中创建“存储过程”[/b]
%FM`/J:zB U4|(r!InNye
  不知道大家的 Access 应用水平如何,反正它对于我来说,仅仅就是一个 MDB 数据库文件的创建工具,我只会新建 MDB 文件,然后在 Access 的界面中创建表,索引,约束等等,over~ p{0P]Qx c

2i(d K ]i/n   Access 中的“查询”,就扮演了存储过程的角色。下文中我提到的 Access 的“存储过程”或者“查询”都是指这个东西
uje{TzN+x
$gm&`8d,T*k]!QD-M   对于“查询”的创建,Access 提供了一个傻瓜工具,类似 VS.NET 里边建立 DataAdapter 时的向导。不过我喜欢直接写 SQL 代码
cLv7QE]jO
v+eM"T:w%Gt'u1J4s]8x   好,下面先看看我们这个简单的例子中所使用的数据库的表结构。
eg}t"|   
+C5o+[f:iZc7_|6j(m }.L4c^!A3G6m L

uA#M0P7itd [img]http://it.x6x8.com/sjk/UploadFiles_9814/200612/2006121516721532.gif[/img]?mE l!^t{"g
  rijL s,EM#] t,Q

3Ah on/N 5A4R0G-kEC(_&nLJ*V
  然后在 Access 主界面上点击左侧的“查询”按钮,再在右边双击“在设计视图中创建查询”,以打开查询设计视图。
R:\ @8EA7y L'J(y   
_a"QsN%o6M )tHv^t;sd~9D/x
s hT1s}r6E
[img]http://it.x6x8.com/sjk/UploadFiles_9814/200612/2006121516722110.gif[/img]
+v:D+L9~D9nm&O/U   
8TT|i^?m+[N :L%x oH.Q6FA
这时弹出的是可视化的查询生成器,我们首先添加 SQL 语句需要涉及的表。Qf4CJ@E*|
  
:LKW D er o:}"W
K)v O%Y\}2`1l ]
E O L1hVz7q@8I [img]http://it.x6x8.com/sjk/UploadFiles_9814/200612/2006121516722627.gif[/img]
#Z/Pk?L)_'WQj,a   
4KEq4d.X )ktF!tq
V4oMX3[Y8Os
  添加表之后,在设计视图上点击鼠标右键,选择“SQL 视图”,以切换到 SQL 代码编辑窗口。i9}m+O @
  
7k |c(b"S :A'E-j4y.|m:^h

YG+Y E,} [img]http://it.x6x8.com/sjk/UploadFiles_9814/200612/2006121516724206.gif[/img]
*Yyc3T!|7_4b#{4|Q;l   
1j+X-A(Ah olgCk? q5zm@8KG1{RQ:\B,H
lAz3G!}3gF'zq
  好,下面说说 Access 的存储过程的特点。3]%L K0eg iT u:h D

kze#~3{\;W   Access 的查询,我目前的感觉是对 SQL 语句的一个包装,或许进行了某种优化如预编译。我们不能像写 SQL Server 存储过程那样使用多重操作,事务,逻辑判断,循环等等……g*X|"Q9AU B _
  
7I#Z Y[w&X{
s Wo AT&? o%|                                                 ~f k H'H
-Cr1{q.x?/e.V
                                                %k3C%cx,\?'h sx

/rf H n*d.G+n                                                 jvD;XI

ae+F7rbMd-@ \                                                
%O dM8N K)su
Z{5P'j+_                                         (Kaz.K"B#iJ

H3{ X+Cay Y i{                                                
"\3HFD'K3oS+{7P2su 2AV/aH-ky%Q9X0V p
                                                ,r zncp
wE/Yhh.^7w
                                                PY-f m_
P?3[`(z4?\^ot
W#}{8g7K?k

?C"G$^;i)W9i9G7F K(x-j r                                        
x+CQ9Lb8Dk raA;^U*\|
                                                      [/b]
页: [1]
查看完整版本: 在 Access 中使用“存储过程”