马上注册,结交更多好友,享用更多功能,让你轻松玩转闽南师范大学。
您需要 登录 才可以下载或查看,没有账号?立即加入
×
< >1. ASP与Access数据库连接:6 m! h* l1 W$ n! f+ ~* z$ `
<%@ language=VBscript%>9 M6 ^/ P/ S) i6 W5 Z3 Q) Z% [
<%; V8 n2 {. g; f1 t. z
dim conn,mdbfile
+ u8 m3 M! R$ z& x2 R& F4 V7 y$ L$ v+ B3 rmdbfile=server.mappath("数据库名称.mdb")
`# E: p; o5 |# Q& jset conn=server.createobject("adodb.connection")
8 d: \2 ^ V+ ~4 e5 }$ {- P5 hconn.open "driver={microsoft access driver
: Y; m3 X! c# z( c# _(*.mdb)};uid=admin;pwd=数据库密码;dbq="&mdbfile
! j; C( E7 _; [6 Q%>3 r; [" S* Z+ m% L
2. ASP与SQL数据库连接:
8 |$ i4 N7 C, j6 j' Q2 I8 X<%@ language=VBscript%>
# G6 j9 w) v5 f W3 V. K( r<%' h4 b1 k* F6 }! ~% `
dim conn, Z: D, u% b# Q
set conn=server.createobject("ADODB.connection")8 e" n) x T: ^0 U$ U
con.open " ROVIDER=SQLOLEDB;DATA
) a: {4 y- o( {1 e( MSOURCE=SQL服务器名称或IP地址;UID=sa WD=数据库密码;DATABASE=数据库名称- N, {& R9 F$ s& a
%></P>5 z* U5 u2 q2 V' u8 k" W. d
< >建立记录集对象:</P>5 [. y% p: U6 O
< >set rs=server.createobject("adodb.recordset")2 I5 {; V. s$ O# |0 |4 E
rs.open SQL语句,conn,3,2</P>
- U; e2 O- {4 s& e( M$ i< >3. SQL常用命令使用方法:
5 q/ J$ s W$ c3 Z5 I4 N(1) 数据记录筛选:
) K( P5 D- s, r9 N% lsql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"7 d' h: I6 s5 G, y9 V; e
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"- T% j0 f* c7 E0 N# J* `* G3 b
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
+ ? a; y6 V0 _sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"
: u, B2 u: p( P5 U: K! u6 Psql="select * from 数据表 where 字段名 between 值1 and 值2"</P>
% Z; @' J4 ?3 f- c9 b; Z: K; j< >(2) 更新数据记录:6 P# d* R4 e2 f' w. l) z7 ?
sql="update 数据表 set 字段名=字段值 where 条件表达式"
: p8 d5 m: B8 ^8 w+ y7 gsql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"</P>
* c- i1 P% S" k) q/ `- k< >(3) 删除数据记录:3 Z+ x$ ]9 @ X9 q' J& s" a
sql="delete from 数据表 where 条件表达式"
2 \, |/ e6 k; ]( A6 ysql="delete from 数据表" (将数据表所有记录删除)</P>
0 p; ^7 v% v2 b5 C& e; m2 t< >(4) 添加数据记录:
9 I* l* Q& z4 u5 {sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"
9 E+ B7 B1 Y! I; ~sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)</P>& d& J l& s6 U; i1 a/ A+ l
< >(5) 数据记录统计函数:9 l. E& Z+ l; H, c, z6 b2 k) y
AVG(字段名) 得出一个表格栏平均值$ f+ [3 D! S5 b9 D
COUNT(*¦字段名) 对数据行数的统计或对某一栏有值的数据行数统计
0 l, n; Y- }# ZMAX(字段名) 取得一个表格栏最大的值
5 y/ s1 c) A! P: Y+ OMIN(字段名) 取得一个表格栏最小的值
2 R' p4 v9 { R' E% FSUM(字段名) 把数据栏的值相加, q& h! R0 ?+ U& }
引用以上函数的方法:; `9 |; S) m/ k G
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
' E& D4 L+ O! | z8 ]set rs=conn.excute(sql)
4 B5 p2 {4 w, E0 ~用 rs("别名") 获取统的计值,其它函数运用同上。</P>
$ z' x6 q, o4 F* q$ o<P>(5) 数据表的建立和删除:
+ v Q4 P3 X* F1 C) `* w! wCREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
% j! r) U3 ]- |0 e例:CREATE TABLE tab01(name varchar(50),datetime default now())</P>
8 q' H' o4 H) s9 L# Y$ A<P>DROP TABLE 数据表名称 (永久性删除一个数据表)( [3 i7 o! @% g/ Z ]
4. 记录集对象的方法:6 Y% B" S: t% b0 \/ D
rs.movenext 将记录指针从当前的位置向下移一行2 N8 M: d+ d8 @6 b/ {9 J; e; `, g
rs.moveprevious 将记录指针从当前的位置向上移一行
+ o$ K P; [) o) n6 U" E w- w0 Prs.movefirst 将记录指针移到数据表第一行, r! M$ N0 R& y
rs.movelast 将记录指针移到数据表最后一行
2 e4 W+ Y7 C5 J. `9 o: urs.absoluteposition=N 将记录指针移到数据表第N行+ y' Z/ ?, S7 o+ [, c
rs.absolutepage=N 将记录指针移到第N页的第一行
' U# b: w, {0 ^! M7 V: E4 J# o8 b8 xrs.pagesize=N 设置每页为N条记录; F" ^) V# `$ \- Y
rs.pagecount 根据 pagesize 的设置返回总页数( r% M8 a( w# M% i. e" f& [6 {
rs.recordcount 返回记录总数
' F$ j% m0 J/ D0 F; j/ O, hrs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
' e9 b ^" d, Q% _" |5 u% xrs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
9 F! u5 b3 T4 y2 N1 Lrs.delete 删除当前记录,但记录指针不会向下移动
% h) x; m) ?* e5 f" {$ u* ]rs.addnew 添加记录到数据表末端4 X' T2 k0 v0 z* t; Z* m
rs.update 更新数据表记录8 w8 j: T, |6 ?. F
---------------------------------------
7 K, L" m' @; E$ A4 a% uRecordset对象方法
5 f- i/ h2 r* K* a7 p% O C8 Z; BOpen方法2 `* \0 w2 u# I( V2 b/ K
recordset.Open Source,ActiveConnection,CursorType,LockType,Options/ r! O+ O$ ]9 |* s5 H
Source, i' Y' F8 x0 @) P: \* k; o. F- I
Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored , O* P, Z3 T4 D: x
Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。</P>
l5 ]( @( d# I0 g3 v9 B( Z<P>ActiveConnection
% L$ O1 X4 S! D# @. ^! E5 t/ G$ C/ FRecordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。</P>& j1 v, F L* X0 `* w. }6 X
<P>CursorType; t% {1 I9 F+ {& F3 i- Z' K
Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
3 {% w! \. j9 ]7 }" h6 i- D--------------------------------------------------------------
4 w0 M- W- y& v& g' ^6 w5 {常数 常数值 说明
3 R$ a0 d4 P3 S D6 U0 E; s-------------------------------------------------------------" f* [& n+ |& l- X: N- c, B* S
adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。
) L% t' s4 c: wadOpenKeyset 1 启动一个Keyset类型的游标。
4 z/ c' G/ D6 u/ q" jadOpenDynamic 2 启动一个Dynamic类型的游标。
; {. h5 J( W) q- gadOpenStatic 3 启动一个Static类型的游标。/ A7 I/ K& E. C% d
-------------------------------------------------------------
# v) q. u3 S0 |% k. s7 g以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。
5 n* C) U/ M8 t1 E; a-------------------------------------------------------------: W6 y/ L5 M. g; v, G& H
Recordset属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
( f4 C# D1 a8 J8 \-------------------------------------------------------------' ]% i0 E+ f3 c
AbsolutePage 不支持 不支持 可读写 可读写+ ^* Q6 Q. w! R9 i9 e# v& g
AbsolutePosition 不支持 不支持 可读写 可读写2 _ c$ q5 C' T. i+ j
ActiveConnection 可读写 可读写 可读写 可读写
4 I ?. D* m9 h' tBOF 只读 只读 只读 只读
& a4 O% H, G% A6 t* t) E; sBookmark 不支持 不支持 可读写 可读写
0 D# g( b9 _% r% t5 wCacheSize 可读写 可读写 可读写 可读写1 T( k( m* a$ ~% s! U
CursorLocation 可读写 可读写 可读写 可读写
8 [ m k. C+ a3 Q" e7 yCursorType 可读写 可读写 可读写 可读写6 t7 ?/ z! ~( I5 ^
EditMode 只读 只读 只读
) Y* p/ h- h( b4 E9 i: @/ K( P只读
4 M0 k- g. n9 D7 O! ZEOF 只读 只读 只读 - t; |: T8 N+ A* q( H+ i/ q" h3 [
只读4 t5 m" _9 M2 \8 c& Y
Filter 可读写 可读写 可读写 可读写9 n+ H5 k% ?$ L
LockType 可读写 可读写 可读写 可读写8 F' V1 X2 n3 s8 F; }6 A
MarshalOptions 可读写 可读写 可读写 可读写
/ C5 `3 @/ m; C& h: }MaxRecords 可读写 可读写 可读写 可读写
, k6 ]) v( P; A8 mPageCount 不支持 不支持 只读 只读
7 w/ m/ {3 _6 `. O$ W, kPageSize 可读写 可读写 可读写 可读写1 L" V |5 ^% K7 C i
RecordCount 不支持 不支持 只读 只读/ f2 M" s$ M @9 B, a6 n
Source 可读写 可读写 可读写 可读写. G: ]& s/ P2 h. X+ ?: c
State 只读 只读 只读 只读4 [+ J- W/ I, n: A7 d/ P6 G) E( K
Status 只读 只读 只读 只读0 |& a: p# S5 q1 |' e
AddNew 支持 支持 支持 支持# @8 h8 H( A: F3 r% |) F" l
CancelBatch 支持 支持 支持 支持
9 U; F: e S. H7 wCancelUpdate 支持 支持 支持 支持
3 a; N2 t/ U1 k/ \% l, |Clone 不支持 不支持5 Y: M$ p* C4 r: o# [/ F
Close 支持 支持 支持 支持
+ N; E" `# f9 {/ VDelete 支持 支持 支持 支持
9 R. _2 T O3 O7 L" uGetRows 支持 支持 支持 支持7 J) _) `4 Y" V+ u" q
Move 不支持 支持 支持 支持+ \: \5 i9 G# k y% \+ @% p
MoveFirst 支持 支持 支持 支持! v# a' l) v1 {. m: S( \
MoveLast 不支持 支持 支持 支持
w. M5 C) J, D0 ]/ F ~MoveNext 支持 支持 支持 支持
t4 \- v2 n; c: {- fMovePrevious 不支持 支持 支持 支持& b2 [* r* q T+ l8 X0 e" Y
NextRecordset 支持 支持 支持 支持
, B3 f- m. Z9 _; g M; BOpen 支持 支持 支持 支持, v0 J* s8 u+ U8 D' T
Requery 支持 支持 支持 支持
0 f( Z* b. p8 D$ K/ b* |, qResync 不支持 不支持 支持 支持
+ v! J* i: j' c+ O1 PSupports 支持 支持 支持 支持
5 ~3 S/ Z& g8 u$ tUpdate 支持 支持 支持 支持, k- e P7 e2 H- m; o
UpdateBatch 支持 支持 支持 支持
) t; S; P, h( a4 B* |--------------------------------------------------------------3 v. I# s# F3 k/ Q# o, c* \5 H
其中NextRecordset方法并不适用于Microsoft Access数据库。</P>
- d4 q5 f# L, \3 Z0 U$ R! R<P>LockType" R7 @8 i% z, _7 S3 X$ a& y
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:$ g- P0 U6 H' F1 ^+ S/ h5 T
-------------------------------------------------------------1 F+ c1 s1 ]: V( c
常数 常数值 说明" i3 J% N4 z* Q1 R8 V1 B
--------------------------------------------------------------2 ]0 F; ~( V7 ^# O% X
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法
& v" U/ F4 O }0 ]0 ~ OadLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。. [5 P+ C6 J5 Q
adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。( ~) ^, Z: B" \' B G; `3 [+ _ R
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、
# E$ z! r; Q- [3 z1 z' e删、改的操作。</P> |