找回密码
 立即加入
搜索

查看: 1253|回复: 8

关于SQL和Recordset

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

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

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

×
<>1. ASP与Access数据库连接:; P5 T8 r# U4 \
&lt;%@ language=VBscript%&gt;
( B! D# w# B) D  c: Q, v( Y) R3 e&lt;%5 J  }% ^8 V$ n5 O
dim conn,mdbfile4 @( {* ?9 {: W
mdbfile=server.mappath("数据库名称.mdb")
' h* {7 e; t3 m: S8 p6 Q0 o+ ]set conn=server.createobject("adodb.connection")
9 j6 q1 z+ i4 o5 q, vconn.open "driver={microsoft access driver
% P/ Q$ T( l2 L7 G7 H2 n3 Q7 y(*.mdb)};uid=admin;pwd=数据库密码;dbq="&amp;mdbfile
  |" y; f: o9 E! `! o7 U) q+ C%&gt;; d8 a: H) ]; a4 g
2. ASP与SQL数据库连接:
! p/ ]4 i) I+ a' T4 W0 _&lt;%@ language=VBscript%&gt;* r3 V/ N" q9 g5 U$ N* E- \& f
&lt;%4 a% q& p" B' j% _
dim conn3 o3 g- T( w# P1 |. D
set conn=server.createobject("ADODB.connection")! B6 o9 t4 b  D6 w, e
con.open "ROVIDER=SQLOLEDB;DATA 1 y, a  s! H3 |1 k4 l  H
SOURCE=SQL服务器名称或IP地址;UID=saWD=数据库密码;DATABASE=数据库名称
8 C3 z2 ]  s/ R# T3 D%&gt;</P>7 O2 x5 M1 L' ^4 e7 n
<>建立记录集对象:</P>1 _% u& W, T1 Q+ C: W
<>set rs=server.createobject("adodb.recordset")* a1 r% u3 E7 L" @" o# C4 L( ?
rs.open SQL语句,conn,3,2</P>
2 W& P  x  A/ J- m9 |% U) c% L<>3. SQL常用命令使用方法:
3 t; @) y% u  u. j& m(1) 数据记录筛选:
- f5 w  O1 O6 S5 D+ p0 X: isql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"& w2 U6 P* w3 g0 X  j( e
sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"5 i) A' S0 U) h  B( R- D1 x9 |
sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"+ Z& Q2 K' e+ ~* i. O+ ?
sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"# h) W1 o. l0 ~6 j  m
sql="select * from 数据表 where 字段名 between 值1 and 值2"</P>
! s( Y8 u# h5 X9 S" {% P) [( U; t: [<>(2) 更新数据记录:
, ^8 Q  k& @% o$ m2 B0 l, ysql="update 数据表 set 字段名=字段值 where 条件表达式"9 U" i& _! _5 P8 ^
sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"</P>: O. P; l' M4 |7 |4 x. T7 s
<>(3) 删除数据记录:
* H3 l; `3 Q2 Fsql="delete from 数据表 where 条件表达式"
8 D. {* o9 N, bsql="delete from 数据表" (将数据表所有记录删除)</P>- i+ p4 c; {! J) d) V
<>(4) 添加数据记录:9 u3 U& Y$ y! a: N* Q/ ~
sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)", ~4 @5 x6 m) k0 i2 r4 B
sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)</P>; }1 h3 L5 i( V6 W6 z
<>(5) 数据记录统计函数:  h- N2 t- c# G$ U6 z
AVG(字段名) 得出一个表格栏平均值" f$ E& V* m/ _3 w( w7 k
COUNT(*&brvbar;字段名) 对数据行数的统计或对某一栏有值的数据行数统计: Q1 X6 q! k( N1 ~" q: r; t
MAX(字段名) 取得一个表格栏最大的值
5 L9 ~  m) G/ _. I& c3 QMIN(字段名) 取得一个表格栏最小的值
3 _+ O1 f6 I# K5 s* \SUM(字段名) 把数据栏的值相加3 \$ m2 ~9 Y+ o. {/ f1 M
引用以上函数的方法:
' e5 }, Z: C8 S. O% ]6 |4 ?9 k. csql="select sum(字段名) as 别名 from 数据表 where 条件表达式"6 {# [9 m' F' C3 c; @7 h5 u6 E/ A
set rs=conn.excute(sql)- @# A2 z6 G% }. V
用 rs("别名") 获取统的计值,其它函数运用同上。</P>
6 b6 p6 k. o. c- Y4 q3 W9 X; |; A& F<P>(5) 数据表的建立和删除:
4 P" I, B) l7 [) C3 M7 n! V: o1 pCREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
# ?4 V. h0 I5 w$ T( g* ?; X例:CREATE TABLE tab01(name varchar(50),datetime default now())</P>
, ]+ v: K& D: l1 X- ~* H<P>DROP TABLE 数据表名称 (永久性删除一个数据表)
- ?5 D& i8 z. \) F4. 记录集对象的方法:+ u; q" r; t; S2 K! K$ s% E! n
rs.movenext 将记录指针从当前的位置向下移一行
; Q8 {+ B7 E) ?+ c3 v' Trs.moveprevious 将记录指针从当前的位置向上移一行  P! k7 t  a3 x  L8 `/ A
rs.movefirst 将记录指针移到数据表第一行
. N; b: u8 z& P7 K  B- mrs.movelast 将记录指针移到数据表最后一行
. c" c- Z. c5 d( P7 D9 R! \' \rs.absoluteposition=N 将记录指针移到数据表第N行! b) z2 ]/ g& ^! y4 Y' y
rs.absolutepage=N 将记录指针移到第N页的第一行: B$ N2 n1 E# a1 h
rs.pagesize=N 设置每页为N条记录& B7 p/ H( R7 T( {# w* d
rs.pagecount 根据 pagesize 的设置返回总页数2 r9 P! L/ D# f! C2 u: a
rs.recordcount 返回记录总数
5 |9 _% \8 z4 B" W! j4 `rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否1 \5 f9 z7 {+ P8 f
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否; n1 _/ W- @# C. Z
rs.delete 删除当前记录,但记录指针不会向下移动
: {: d0 C5 z7 @! crs.addnew 添加记录到数据表末端
1 r- J( d5 x% C; G4 e" R8 srs.update 更新数据表记录; J2 r  g  V; |+ q" O+ h$ u' }
---------------------------------------
" k$ S' @& u, [Recordset对象方法+ A* m7 f- F4 ~
Open方法
  V# ^; q: W2 P$ q$ c3 ^9 srecordset.Open Source,ActiveConnection,CursorType,LockType,Options% s+ L; L; Y* d: R. F: `9 W6 R3 e
Source
$ z7 L" Z! f: {$ o3 e9 oRecordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored : L; r- {$ ^1 c; }- {
Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。</P>% k* c" Q+ S3 u# j& X
<P>ActiveConnection# {( m( j  l4 c, o# C
Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。</P>: g$ r! {+ C' P4 ~6 }
<P>CursorType
' ?* z4 Y6 N/ r2 a/ ~5 B! t6 KRecordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
1 B1 v( g! s/ f4 U, {--------------------------------------------------------------) |) M+ ?* b- r
常数 常数值 说明
/ e, z* L4 l. j& a1 e-------------------------------------------------------------
5 V7 T; V5 t' `( M& ~adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。
4 b7 u' Q  l- {* X% nadOpenKeyset 1 启动一个Keyset类型的游标。, P( L- D) K, c, J
adOpenDynamic 2 启动一个Dynamic类型的游标。
; s) d8 E; b) s+ ZadOpenStatic 3 启动一个Static类型的游标。( d; Q$ Q4 Y5 E1 T$ O
-------------------------------------------------------------
  q5 b  d/ Q- q- H% M以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。4 D6 n4 z6 I3 t% g, n) M
-------------------------------------------------------------1 P! s8 n2 U1 [. W* F" z
Recordset属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
- x- X' t9 y' T' ^9 O-------------------------------------------------------------
+ d9 w7 X/ s0 {% `; EAbsolutePage 不支持 不支持 可读写 可读写$ g! B& v/ q- w) e6 Q
AbsolutePosition 不支持 不支持 可读写 可读写! R8 f/ z1 R# k5 b7 ~& a. o
ActiveConnection 可读写 可读写 可读写 可读写
4 {; i. \$ \: q) V2 I' o' iBOF 只读 只读 只读 只读! X9 o% h, ~% c* D) o4 U: B
Bookmark 不支持 不支持 可读写 可读写
! J' u* Q7 E  f4 x' M- nCacheSize 可读写 可读写 可读写 可读写1 i) ^9 L. t9 M; v! }
CursorLocation 可读写 可读写 可读写 可读写' i0 v2 o, v$ Z
CursorType 可读写 可读写 可读写 可读写
( D* U/ A2 s/ _  X. F) k; VEditMode 只读 只读 只读 * B* r4 \" P7 @0 B! O4 D6 i
只读  G  N2 ~' e3 x9 ]+ n" K2 {
EOF 只读 只读 只读 7 |+ L( ]& }' d5 S9 d% B# F! x
只读
) b5 o4 g- B: f$ H  Q+ KFilter 可读写 可读写 可读写 可读写
  l1 i9 [3 a0 M% `LockType 可读写 可读写 可读写 可读写
) i0 k+ W" a3 X& Z; [' n: HMarshalOptions 可读写 可读写 可读写 可读写
2 z) O( d! B$ k4 s9 B3 |MaxRecords 可读写 可读写 可读写 可读写! S. M  \' N# j1 s7 ~  T  W
PageCount 不支持 不支持 只读 只读
; N4 R5 b. m' Q) h" UPageSize 可读写 可读写 可读写 可读写
0 L" [1 }3 u5 ~RecordCount 不支持 不支持 只读 只读
% p5 a  }. K3 a! m# OSource 可读写 可读写 可读写 可读写
/ {' C; I3 M0 Y3 r: X' D4 N( EState 只读 只读 只读 只读6 B, T( x* W* Z% o) [
Status 只读 只读 只读 只读( k. w5 m" `/ `+ Y" g1 s2 C
AddNew 支持 支持 支持 支持
' @, {$ J: }8 r& U  H7 vCancelBatch 支持 支持 支持 支持0 V) o# C! P* F4 S( `0 q
CancelUpdate 支持 支持 支持 支持4 I6 j6 d% I. w! b, T( a
Clone 不支持 不支持
) y9 K4 k0 v; j' y0 z, N4 p2 rClose 支持 支持 支持 支持
8 {" D4 g0 r3 ?9 K0 iDelete 支持 支持 支持 支持
; }: O. D; r1 X. z3 OGetRows 支持 支持 支持 支持
0 D/ L2 v# G( d7 XMove 不支持 支持 支持 支持
9 |  U9 G/ _% r- e. D: o; {- PMoveFirst 支持 支持 支持 支持
) B- U! w9 c# Q7 R3 BMoveLast 不支持 支持 支持 支持
/ Y# \6 j4 p. O1 A, A3 ^1 _MoveNext 支持 支持 支持 支持8 O* o: j7 M! n" b) i- v
MovePrevious 不支持 支持 支持 支持& G0 b: l9 y8 [7 {! B( L# U) B
NextRecordset 支持 支持 支持 支持- @, n0 z- s/ n6 c) d
Open 支持 支持 支持 支持
2 Q5 y3 M! [  r6 Y- ZRequery 支持 支持 支持 支持2 P$ T; r; E/ l8 S( X! a
Resync 不支持 不支持 支持 支持
) q, z2 ^  \6 t/ n8 |- t9 o& ~; z6 i! kSupports 支持 支持 支持 支持9 V6 g0 I, ^! U& s+ b$ J% s
Update 支持 支持 支持 支持; D* F* i4 b4 G
UpdateBatch 支持 支持 支持 支持
' b1 e/ T$ J4 F, x. ]3 b4 ~--------------------------------------------------------------: q* i$ ]4 A4 @- O; a
其中NextRecordset方法并不适用于Microsoft Access数据库。</P>
$ ]. d! _  k& \; C- q6 k+ ]<P>LockType% h% c3 q, Y  H+ f
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:) \3 z) \7 J! i( }' H
-------------------------------------------------------------
+ H2 X4 L3 l- h常数 常数值 说明
$ w& O) u/ p9 r/ l2 e8 r$ R--------------------------------------------------------------0 j" x& z* w3 G# K2 X
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法
, m1 {' Z( h( ^adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。9 g( t& k  h0 y" r
adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。2 S- Q6 `. U" Z! H
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、1 f5 z* B: u8 O8 H: f4 a+ Z
删、改的操作。</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-25 19:30 , Processed in 0.051656 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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