发新话题
打印

[方法技巧] 使用DatabaseAccess(数据库访问)组件

使用DatabaseAccess(数据库访问)组件

ASP的DatabaseAccess组件使用ActiveXDataObjects(ADO)提供一种轻而易举的方法,可以访问存储在数据库或其他表格式数据结构(如电子表格)中的信息,只要它们遵循OpenDatabaseConnectivity(ODBC)标准即可。在本课中,您将连接到一个Microsoft?Access客户数据库,并且显示目录列表。您将学习如何使用SQLSELECT语句来检索数据,并且创建一个HTML表格来显示结果。& @4 R' ?0 w% J# r4 e2 c! \' v

: S1 h  b  e2 p7 a' \- J% A识别数据库
# e5 c8 Z- [& [- [, U6 v; x! A
2 y8 e7 M4 H6 B- K8 |' a8 N在通过DatabaseAccess组件使用一个数据库之前,必须在“控制面板”的OD BC程序中识别这个数据库。在本例中,您将使用本教程提供的一个Microsoft? Access数据库。0 ]2 L* @$ y0 M! R9 F  c, |# `7 l6 c
8 p% }. d7 C3 p0 K6 v+ B
在运行Web服务器(localhost)的计算机上,打开“控制面板”。
5 }( U8 S8 N. M; l2 f
6 _; D4 j; h4 Y$ G/ z双击“ODBC”图标,然后单击“系统DSN”选项卡。$ Y! A! B3 a- |0 O; j' ?, @, L
" }* o5 r" t* q5 p& k
DSN将告诉数据库驱动程序(用来配置数据库并与其通讯的程序)数据库文件所在的位置。您可以创建3种类型的DSN:用户DSN(UserDSN),只能对您起作用;系统DSN(SystemDSN),可以对计算机的所有用户起作用;文件DSN(F ileDSN),将DSN信息保存为文件,并且允许所有用户使用相同的数据库驱动程序。本教程使用的DSN必须是系统DSN(SystemDSN)。
: F, d% z# q% K2 ~- d
6 w# k/ `$ g- a5 R+ S单击“添加”,选择“MicrosoftAccess驱动程序”,然后单击“完成”。
( A0 P1 f" i8 H: T* K+ E+ Q9 p+ |+ U. W: r! T) ^
在“数据源名称”框中,键入ASPTutorial,然后单击“选择”。选择BTCustm r.mdb文件(默认情况下位于WINNTHelpIISHtmTutorial目录中),然后单击“确定”。  ]9 k& v1 p3 K. {) R8 R) ]/ z

$ s2 y2 `. _* [1 c单击“确定”关闭对话框。  l' g4 c' j+ j( q
5 ~5 ~3 z2 \+ I1 c/ j
创建组件实例
# R7 W% k5 o8 K( H0 u2 ]3 N+ m2 r% ~- m! k
用文本编辑器打开localhostWeb服务器上Tutorial目录(C:WINNTHelp iishtm        utorial)中的Database.asp文件。- i$ v9 s& w$ M
" Q) t6 ]1 L: l' K& X' X9 f
查找文字“DefineScriptingLanguage”,将下列脚本插入找到的文字行之后:
  t' |6 K9 \- @5 `$ v0 I! s
# c  d% X5 `4 G- E9 \〈%@LANGUAGE="VBScript"%〉, x; A; F+ j# I2 `* G! h
" z" ]/ l$ R7 [4 d
必须保证这个标记是所有.asp文件的第一个脚本行。
3 e) t) X' w  \  c! |3 H$ z6 w) V  w, f* v: G
查找文字“TutorialLesson-ADOConnection”,脚本将插入到找到的文字行之后。
+ U9 S! L% H& M- f0 @+ A/ i. |/ O, e9 ?, |' s" @5 [0 W
必须先创建一个对象的实例,然后才能使用它。请复制并粘贴以下脚本命令:! ^' A" [+ ]. N

: W* K+ D. q& p8 R1 t! F" ]〈%
/ v5 e! u/ H/ B6 m7 x$ T1 h+ Q# }: R) B1 O# Y& w: l
SetobjConnection=Server.CreateObject("ADODB.Connection")
6 b! d& F- T$ r- h0 \, e( [2 _0 t6 k, G, W( f0 o8 _  R
如果在此以前,另一个用户已经学完了教程的这一部分,那么这些脚本命令就已经在“TutorialLesson”注释行以下了。请用复制的脚本覆盖已有的脚本,或者将未使用过的Database.asp从Template子目录(C:WINNTHelpiishtm        u torial/template)复制到Tutorial目录中。对于DatabaseAccess组件来说,您必须指定ODBC数据源(要从其中检索数据的数据库),方法是打开一个到数据库的连接。复制并粘贴以下脚本命令:
+ q: z! X& _- d* [8 u& ~, c4 ^. q0 a& B$ D
objConnection.Open"ASPTutorial"
# d4 }7 R7 {" m- \" o7 ?2 h1 B# n1 a! d- @2 O$ k" q, c
使用DatabaseAccess组件的Execute方法,可以向数据库发送一个将结构化查询语言(StructuredQueryLanguage,SQL)的SELECT命令,并且将返回的记录保存到结果集合(rsCustomersList)中。请将下列脚本命令复制并粘贴到 objConnection.Open语句之后:1 ^, j- [1 h( G' o' D' H: N/ x3 |
# Q# \& L' h3 ~  @1 X+ n
SQLQuery="SELECT*FROMCustomers"* ^& Z4 r: ]4 h- ~3 E5 o7 e
! a6 x, r3 A  ?
SetrsCustomersList=objConnection.Execute(SQLQuery)
. B3 E$ b1 A" B5 p1 i% C
; _( S/ X" r. J/ w  M) ~  @" E%〉$ v( M+ m; ?; e, B0 c

/ f- }  V/ y, h8 G# U* Q, P/ b如果将SQL查询字符串直接传递给Execute方法,而不是先给变量SQLQuery 赋值,就可以将这两行合并。当SQLSELECT行比较长时,为使脚本易读一些,可以将字符串赋值给一个变量(如SQLQuery),然后将变量名传递给Execute 方法。显示返回的结果集合
+ v0 x3 Y+ D% D6 T; e3 {- C, T) Z
, |" }, I. u) ~. B6 G2 k4 M您可以将结果集合视为一个表格,这个表格的结构由SQLSELECT语句中的字段决定。显示检索返回的行,就象在结果集合中按行数执行循环一样简单。在本示例中,返回的数据显示在HTML表格行中。
  a4 ]# m" N3 h- x+ @6 i  Z
. J/ o8 L+ E2 }* q/ h; k4 H在Database.asp文件中,查找文字“TutorialLesson-DisplayADOData” ,将以下脚本复制并粘贴到找到的行之后:* P( `4 J2 U6 C+ H, T7 s. A4 G
1 E! O) m5 @3 p  T' H4 P, C
〈%DoUntilrsCustomersList.EOF%〉
- R  J$ B% Q: k2 d1 h& I
# f& e: F# Q$ I' B  l  @2 U' A8 G〈tr〉
- I# t' ~  v8 ^+ T6 m) q+ l/ H! q) h- g% {# S
〈tdbgcolor="f7efde"align=center〉3 D$ e, P, B# c$ n$ O" v
5 B- V9 C) ~* ]4 {# `9 i+ x
〈%=rsCustomersList("ContactFirstName")%〉
+ Q1 o% ~/ w1 |# h; z
# L# d5 d# C3 Z/ _6 F  s8 |〈%=rsCustomersList("ContactLastName")%〉5 n' T- p4 S. R0 _8 a9 l( T

/ u' J/ @) J9 Q, K0 ^6 p+ r7 U# X〈/td〉
% I; Q6 P9 }4 g# p* l6 P' R& A4 |) L9 w7 U( ?0 |  _& c: ~
〈tdbgcolor="f7efde"align=center〉! V* s: |0 [9 V1 y1 G' u  p

$ N4 b( D' W6 d+ y〈ahref="mailt〈%=rsCustomersList("ContactLastName")%〉"〉
+ z( X( ~4 z, V% l! o2 I
9 t# }. S# J8 E. g+ J! @〈%=rsCustomersList("ContactLastName")%〉〈/a〉
  V, B  a' O+ @% t4 ?- Q( T# S( u
〈/td〉
2 h3 R/ e0 J* a5 |7 h; O  z2 r. O5 _5 o' N) E
〈tdbgcolor="f7efde"align=center〉, H% `1 N( H5 g% p6 x
# ?# y; _# O+ s3 V
〈%=rsCustomersList("City")%〉% {* n* g% L8 F

7 [4 q# U. x9 h, |% h8 h〈/td〉
! a- _3 W# X( d) e7 B) k6 u
2 o6 x/ l6 r! s+ w& H* `4 H- p〈tdbgcolor="f7efde"align=center〉
6 c; M% x/ m7 j. ?
6 t$ @' N1 o6 a' d# D! U: b〈%=rsCustomersList("StateOrProvince")%〉, P6 |- w# ?# q

" ^/ U0 N4 x4 N5 k2 f  N〈/td〉
, q1 u) ?* r; d# V6 h
4 }" C* z4 v* s, H- Z& K〈/tr〉( {( R' X+ d# R

- Q0 _, ]% `6 w, [; n' p0 I/ u如果在此以前,另一个用户已经学完了教程的这一部分,那么这些脚本命令就已经存在了。用复制的脚本覆盖已有的脚本,或者将未使用过的Bayshore.asp从 Template目录复制到Tutorial目录中。
+ {6 R# u0 y  S1 o6 P4 ^& k- v* J8 r# R2 |1 B5 G# H4 Q  k
当条件为“真”时,VBScriptDo...Loop语句重复执行一段语句。被重复执行的语句可以是脚本命令或HTML文本和标记。因此,在循环的每次重复中,您都可以用HTML画出表格行,并且用脚本命令插入返回的数据。- K2 C- I9 v; Z1 f( F

9 V& |6 p$ A( p6 T4 h8 E2 [. w要完成循环,还要使用MoveNext方法来移动行指针到下一行。因为这一语句仍然在Do...Loop语句中,所以它一直重复,直到到达文件结尾才停止。请复制以下脚本,并将其粘贴到“TutorialLesson-RetrieveNextRow”行之后:
: F% a, I- e. O2 P- Z2 G% d  w: R+ P' c& V. ~! B) a' N
〈%. k1 s7 A. S' X* i8 p8 c  J6 W
$ e0 [  o, G. z" j
rsCustomersList.MoveNext, B& ~. F' J% d! e0 I9 G
% A: v4 Y& w0 Z2 L% w4 Z% h
Loop
; ?9 J; n  c9 z" D, j. H/ W5 t5 ^# E4 F& y5 k$ M4 q5 O
%〉
3 c* t. X8 v- P
: Y  g' [$ m" C% ^; E! m  Y$ m) R以纯文本格式保存Database.asp文件,并且退出文本编辑器。注意文件后缀. asp不要被文本编辑器替换。6 h! w, s  {8 ~0 D; y# ~
$ I' Y* I% e! g; _; Y$ t' i. b& i
 9 x" i/ Z" ?& F/ _9 _5 h! N

" }' ^: ]0 H. G; A! B若要验证您创建的ASP页是否正常运行,请将您的浏览器导向http://localho st/IISHelp/IIS/Help/Htm/Tutorial/Database.asp。(此后若要返回本教程,只要在浏览器中单击“上一页”或“Back”按钮即可。)3 p  f( ?1 ]$ A; d. Y3 b

# t: n' n/ X" u- H% g$ R3 X: t) s自学参考
# e8 E) }: J. F2 l& a/ z1 A) ~% a4 H# |2 y  ~
如果您正使用WindowsNT,要参阅更完整的DatabaseAccess组件示例,可以访问ExplorationAir示范节点。单击BehindtheScenes图像,可以学习用来创建这个Web节点的脚本的更多知识。在BayshoreTravelWeb页上也有指向ExplorationAir示范节点的链接。( u% h* X* T0 w3 Z

- W' Y$ t2 [, L$ a0 [注意如果您还没有访问ExplorationAir示范节点,上面的链接将把您带到E xplorationAir主页。此后若要返回本教程,只要在浏览器中单击“上一页”或 “Back”按钮即可。, C% R* Q; s9 s6 c1 T& Y

- R5 i$ |( A6 c" ~现在,您已经用过了ActiveX组件,让我们来学习模块3:编写自己的组件。) e- G& |/ k+ h
/ R, @5 x. [) G% R; {
模块3:编写自己的组件
# |5 d7 p) a) i
) _' k8 Q/ [/ P, w/ l3 j5 n2 p) j3 G请选择本课的脚本语言。% }4 z9 v$ i2 o; l* O+ F
5 V/ F4 t  q% e9 {9 z
在模块2中,您已经熟悉了ASP提供的组件,现在该创建自己的组件来满足自己的特殊需要了。5 d% |& o  M3 Q
( |& c% w3 q7 y( Y0 ?6 P
假设您需要创建一个ASP程序,以便通过Web节点提供特定的财务功能。ASP 没有直接提供这样的功能,不过您可以通过创建自己的Java或ActiveX组件来解决问题。您将在本模块中学会这些。$ H9 l3 k) T  _. y
; h7 r( i; U# M) J' d
如果要学习如何创建并使用组件,首先使用下面的表格进行选择:8 l4 ~2 Q# j. O+ ^% ]! u
8 g' K4 R" D. R- F% Z1 W0 ?8 P
选择本课要创建的组件类型:9 V" H& s8 }3 a& V% ]
& Y( v8 R9 @+ M8 @9 X1 d
VisualBasic5.0ActiveX组件" ]7 Q6 g4 d8 S  o" q4 j: b8 c
1 X* n" A4 X! {- o3 ]# j
VisualJ++1.1Java?组件 ----------/ z) K6 n% y; X7 p& [

) {  m) i6 e8 {* L9 i; A要点
$ M: F: w$ `  }; n* X  t) r
) K1 Z5 E0 D! S$ @若要保存并查看您在本模块中的工作结果,需要:9 s/ ^% @: E* ]7 ]& {4 d- c4 y4 O" `; V
1 F! t& W7 T; X# ^) @
对localhostWeb服务器上的/iishelp/iis/htm/tutorial虚拟目录具有“写 (Write)”和“改编Web服务器(ScriptWebserver)”权限。详细信息,请参阅设置Web服务器权限。6 x; e& ?. d, m( A  i% k2 Z

% E/ F# I; S$ ^. d( `" w% J1 O' p, D您的WindowsNT帐号,必须在DriveLetter:WinntSystem32Inetsrv目录及其子目录上具有WindowsNTFileSystem(NTFS)的读、写和运行程序权限(此处的DriveLetter代表localhostWeb服务器的适当的驱动器号,如果您没有安装到默认目录下,请用您的安装目录代替WinntSystem32)。
- l! C2 B; ]( |+ C+ M" x
0 i! ^% Y( d4 y7 h: y" A7 Q7 {2 j要完成本模块,必须在localhostWeb服务器上安装:0 o4 R6 n! ]' g% @* n% f, ?

; ?7 l# J2 Y1 `* ?5 |Microsoft?VisualBasic5.0专业版的32位版本或VisualBasic5.0企业版开发系统。, M0 _4 _* P+ S! u

' t4 a7 Y- Z- h2 r/ S如果已经禁止了Web浏览器运行Java程序功能,请在开始教程以前启用该功能
发新话题