找回密码
 立即加入
搜索

查看: 1254|回复: 8

关于SQL和Recordset

[复制链接]
marson 发表于 2004-6-18 01:25:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转闽南师范大学。

您需要 登录 才可以下载或查看,没有账号?立即加入

×
<>1. ASP与Access数据库连接:6 m! h* l1 W$ n! f+ ~* z$ `
&lt;%@ language=VBscript%&gt;9 M6 ^/ P/ S) i6 W5 Z3 Q) Z% [
&lt;%; 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="&amp;mdbfile
! j; C( E7 _; [6 Q%&gt;3 r; [" S* Z+ m% L
2. ASP与SQL数据库连接:
8 |$ i4 N7 C, j6 j' Q2 I8 X&lt;%@ language=VBscript%&gt;
# G6 j9 w) v5 f  W3 V. K( r&lt;%' 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=saWD=数据库密码;DATABASE=数据库名称- N, {& R9 F$ s& a
%&gt;</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(*&brvbar;字段名) 对数据行数的统计或对某一栏有值的数据行数统计
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>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
 楼主| marson 发表于 2004-6-18 19:42:17 | 显示全部楼层
<>这么好的帖怎么没人顶啊</P><>我自己来顶下</P><>感谢版主置顶:)</P>[em02][em02]
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

论坛孤魂 发表于 2004-6-19 21:49:56 | 显示全部楼层
<>还有没有更多的啊</P><>我正在学这个啊</P><>谢了啊</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

论坛孤魂 发表于 2004-6-19 21:49:25 | 显示全部楼层
<>好贴子啊</P><>俺找得好苦啊</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

suifeng 发表于 2004-7-3 01:27:41 | 显示全部楼层
<>好贴,我顶</P><>顶顶 </P><>                                                  </P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

冬眠 发表于 2004-11-20 22:37:23 | 显示全部楼层
up
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

潇傻豆豆 发表于 2004-11-27 02:33:03 | 显示全部楼层
呼~~现在终于是能看懂一点点了....
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

冬眠 发表于 2004-11-28 18:07:46 | 显示全部楼层
[em02]
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

yanking 发表于 2004-12-6 01:31:18 | 显示全部楼层
好!!!
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

手机版|龙江曦月 ( 闽ICP备05009150号-1 )闽公安网备35060202000316

GMT+8, 2025-5-26 02:01 , Processed in 0.069542 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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