|
九州少年 管理员
     
|
楼主
大 中
小 发表于 2007-12-15 20:50 只看该作者
ASP连接11种数据库语法总结
引用:( z8 J, l2 ~. g6 r( }) G经常使用到有关数据库的操作。包括连接代码、SQL命令等等,又不曾刻意去记忆它们(我本人是不愿意去记这东东),所以常常在用到的时候又去查书本,翻来翻去。一些比较少用的数据库还不一定能顺利找到,所以现在把它们全归纳到这里,提供大家参考。 % h9 v0 F9 T9 y% X( d
5 g5 l X/ o3 ~7 V4 E
& A/ n8 f$ d# K: e<一>数据库的连接方法:
4 v+ h! A/ ?, ~4 w' |+ b J( w: {: N5 k! Z% P# c1 ^
1.Access数据库的DSN-less连接方法:
/ F W, {+ L3 h( r- Q" |' Z$ O- s0 S. m7 @
set adocon=Server.Createobject("adodb.connection")
3 A- P, I. D! ^) |7 O5 s% B3 T; ]6 yadoconn.Open"Driver={Microsoft Access Driver(*.mdb)};DBQ="& _4 t$ J7 o, b& n. D1 Z, F7 P
Server.MapPath("数据库所在路径")
2 e2 A8 }* J; J1 P6 H% X
# C1 E O/ T. V
( u2 v J% C! {9 Z) B 2.Access OLE DB连接方法:
4 N4 ^! ?; }; r9 ^ B" o
: m6 Y5 N9 B$ L( s0 H- _3 {" Oset adocon=Server.Createobject("adodb.connection")
; r4 B4 W( Q4 |& V( badocon.open"Provider=Microsoft.Jet.OLEDB.4.0;"& _- M2 L% l5 `' g4 v, Z; P
"Data Source=" & Server.MapPath("数据库所在路径")% O8 a w; @1 S: d: T- q
% R3 q3 E n) g
; s' I/ C- A4 }$ i, G 3.SQL server连接方法:3 U2 r8 E' P# H9 ]) t. t
3 k) W* F6 ?9 E6 rset adocon=server.createobject("adodb.recordset")5 L2 |1 N7 |2 r' E) ~0 c
adocon.Open"Driver={SQL Server};Server=(Local);UID=***;PWD=***;"& _" \& W# T2 s5 P( Z; b% }
"database=数据库名;"8 y8 h1 u" [# L- F; X
, M0 o8 R7 \% M
& U6 f9 E0 N; U0 M 4.SQL server OLE DB连接方法:
6 ~: S. m, P/ J! O. q& G4 t; B
' Q* L5 ~) U/ H% uset adocon=Server.Createobject("adodb.connection")
Q4 H9 x4 n( w8 t( }adocon.open"provider=SQLOLEDB.1;Data Source=RITANT4;"& _
3 }) }4 Z" n B# N. T"user ID=***;Password=***;"& _
2 K) E1 x5 p2 n" l7 v. p/ l3 d"inital Catalog=数据库名", V3 b6 x1 |3 B. f) z
8 O* \. U G: _$ @! H
. ~0 ?; {, M& v: X* H- h8 q: H9 z s! Z) q1 R! T7 X8 Z
5.Oracle 连接方法:; c) y# h" g' a
" x8 v! Y a# h8 W6 P' V4 ]5 M! o2 z
set adocon=Server.Createobject("adodb.connection")% \1 l( j% e6 k% D9 \
adocon.open"Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"4 e9 `% Q( o% x- j# ?# i
( `* r+ G* {+ S/ k
4 q S! Y" o3 k& h/ x3 U
6.Oracle OLE DB 连接方法: u: R6 X$ O. m% o6 }$ _0 P5 Q
- N& A+ {% S/ r: R b. }( w. P
set adocon=Server.Createobject("adodb.connection")6 C$ q# S# [: E( _4 M* l
adocon.open"Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"
) g& u/ y0 y. \) x6 n! a
" _# Q; c4 r7 e* Z6 h2 i9 R8 M3 L2 S2 `$ {( B" x
7.dBase 连接方法:, [# U; A9 C2 ]& b u& j
+ u4 n _2 u! zset adocon=Server.Createobject("adodb.connection")+ v% O$ a, L0 h8 Z0 [0 I3 a
adocon.open"Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"! O$ o Z- g4 p* r
% G4 n* H4 s# W& ~
% F( m9 Y' d2 ~: q3 T4 ] 8.mySQL 连接方法:2 [# m5 ]& l$ F+ c1 Y* z+ q" K
3 V3 B; F; v; D A
set adocon=Server.Createobject("adodb.connection")
2 A8 i9 v. y# H M8 n* ]* \adocon.open"Driver={mysql};database=yourdatabase;
! J& b3 D9 z2 xuid=username;pwd=yourpassword;option=16386;"
: X n+ M7 g- Z0 h
9 P, E" ~3 b; Y" x6 z% ^- z, x4 I$ ^
9.Visual Foxpro 连接方法:
0 n8 \* Y; D' y* C! x' y, X! b( M$ Y" l+ ~
set adocon=Server.Createobject("adodb.connection")
/ p* E5 |% q1 Vadocon.open"Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"7 F$ I; [- V; N
& \/ m; L! E# t/ s/ _
0 r" H- ~0 I* q+ v$ P2 e. X 10.MS text 连接方法:! o+ X6 M; M4 C' X
2 F, ]' g. a+ R8 i: S7 \, l, x- p
set adocon=Server.Createobject("adodb.connection")
: v4 {2 W& Y$ E0 D# Q7 P* w3 aadocon.open"Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;"&_7 A: Y0 c, P0 l h, B* p. ~
"extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"
3 k9 |% z7 r; E4 }; g$ O
8 O0 u- x/ p* a2 n! W3 Z# U* M) g
11.MS text OLE DB 连接方法:; T( X! N( [- U9 m0 L! e
2 Q& g# x) T6 ]. ^set adocon=Server.Createobject("adodb.connection")! ?0 O+ o3 h, y8 A+ ~
adocon.open"Provider=microsof.jet.oledb.4.0;data source=your_path;"&_
' J1 g# i0 T% E" ?"Extended Properties'text;FMT=Delimited'"3 h9 o: s9 @! X0 v2 k
, c0 K' @1 ^4 }$ N v2 w4 p# Y
<二>常用的四种SQL命令:
$ e+ y- Z+ P1 ^0 w: b9 [, @6 @( ^" ^% E5 m# ?/ n
1.查询数据记录(Select)
1 B* N$ I. C# }8 t c 语法:Select 字段串行 From table Where 字段=内容
2 d4 u* I7 _7 q 例子:想从book表中找出作者为"cancer"的所有记录,SQL语句便如下:
, m5 n9 }7 N) m3 U) R# V, d) n8 q! x1 _
select * from book where author=’cancer’
/ q. h. V" ?; d0 k& [0 x q6 S& h
# |% ` |( I; U" N. ]7 {; h: H5 b. f* `9 A* a$ n) U
"*"是取出book表所有的字段,如查询的字段值为数字,则其后的"内容"便无须加上单引号,如是日期,则在Access中用(#)包括,而在SQL server中则用(’)包括,
9 | t2 U& C {9 E/ m4 l如:2 D o- ]- h$ @
. m7 W; O0 t% S7 J8 Zselect * from book where id=1; r* d0 M% z! ]3 b
select * from book where pub_date=#2002-1-7# (Access)4 q7 O+ ?" s7 z4 m5 Z6 {
select * from book where pub_date=’2002-1-7’ (SQL Server)
' W& @1 ~+ t3 P! _
% u, h& T) ?$ S; l$ h& W! V5 R4 P K( S- j- l7 u: i) ?
提示:
% a, b. }- R: J+ b 日期函数to_date不是标准sql文,不是所有的数据库适用,所以大家在使用的时候要参考数据库具体语法' P2 r# R. d) c$ p
9 w% ?! i7 ~! P% e. V. Q! m( d: A
另外如果是查询传入的变量,则如下:
0 l# ~7 x/ x0 S- s/ U$ W6 }5 M. x. S6 r
strau=request.form("author"); ?5 C/ X3 O; B7 R( ?( s0 z* u8 W
strsql="select * from book where author=’"&strau&"’"5 a! X6 d% D3 r! ]% f& n8 R" m
7 w$ K# F5 `# q6 {9 @/ {& G o
# H, L1 p8 ]' G, E, E 如果查询的是数字,则:( Z( U8 `9 L* [/ m
! q: I5 @# \+ B1 i& h) Y
intID=request.form("id"), P" V5 l P1 Z1 q- Z% L
strsql="select * from book where id="&intID0 T0 i2 Z G8 ]4 I+ g
3 m( A. o4 k: S k) c3 X' W5 ]
# ]( g$ |6 u3 Q, U7 ^5 n( _# z 在很多数据库中,如:oracle,上面的语句是可以写成:
$ L& A& D5 P: b& x& V O" `4 u: k
* s9 ]; v. a/ e9 X3 D4 i8 ustrsql="select * from book where id='"&intID&"'"# I* G, h1 I( |( v
; x. N5 ?- v+ y$ M% |$ U6 n, v
9 g' G3 W# |* \) B" Z1 o# O4 n" R 但是字符型一定不能按照数字格式写,需要注意。
9 l3 }* h! c5 {) n4 E& Q: S2 Q( V" G# W9 x
! p) y( ^* `) ~* G! b 2.添加记录(Insert)6 T! @) u% o( r( g# e+ ?
语法:
6 F# n4 N" I7 j8 l4 O
& _4 U! i7 H* N" lInsert into table(field1,field2,....) Values (value1,value2,....)
$ w, v- K8 x% ?/ i3 R6 A3 K& Z E6 ^4 n; e- O7 S; S
9 A- L9 k! g, T' k( d) `8 @
例子:添加一作者是"cancer"的记录入book表:
; y x; |$ f9 Y! s. ^7 q6 G/ H5 r0 h6 q6 ?' Q0 L% a( t
insert into book (bookno,author,bookname) values (’CF001’,’cancer’,’Cancer无组件上传程序’)
6 d$ {. o4 ?& k: ?) B; z, [9 g1 }2 ^( G$ `$ h) N9 T
8 h5 }% q' _% Y, U 同样,如果用到变量就如下:
) d r/ `" U" L% v4 {, t
4 B% N! A; d* u+ F8 K& Tstrno=request.form("bookno")
0 L5 K/ D/ M& ?4 jstrau=request.form("author")1 P: A+ d7 e0 ?+ Z: _
strname=request.form("bookname"): O m5 q2 o. B0 f5 c: g
strsql="insert into book (bookno,author,bookname) values (’"&strno&"’,’"&strau&"’,’"&strname&"’)"& W r0 l$ y1 S6 C
6 E' [8 T1 Y1 x X9 `6 ]% y
9 p r6 A3 d) c& s 3.用Recordset对象的Addnew插入数据的方法:
E. l$ Y5 b3 Y2 ` 语法:
' R$ R- \7 n/ i( |/ x2 V9 D: L4 r+ y1 \0 C
rs.addnew
! `* I# g; a3 [0 N3 `2 Crs("field1").value=value1
0 Z* R f& o3 s5 N0 z! W3 Ors("field2").value=value24 S, ]" a/ p: O4 ]* ?& \! j' L" D
...% {9 w9 D7 n- {5 e: R+ [. U# U1 D2 `$ c
rs.update
* S O' _& v9 M( R/ J2 r, `& Y5 E) U" R3 x# c9 `7 V( m! c
, g) R! P; O i/ B0 ^8 L: [
4.修改数据记录(Update)
, W1 k1 G$ P- Y5 t, W4 @ l: g 语法:
8 A* w4 v! N9 w+ O0 p
% `$ T3 o. z# l( r! xupdate table set field1=value1,field2=value2,...where fieldx=valuex' Z& S% {* U& p4 d# M
$ h6 E0 Q# K/ q3 N* u5 s5 J$ `2 _% j! T- E( H% n0 R" P
例子:
3 D& q, }4 ^0 U9 I
0 T; {0 V' k& m" j* Jupdate book set author=’babycrazy’ where bookno=’CF001’
- W3 ]2 q( {7 @$ L3 {# T: c
. [8 D) u, D0 k" f5 v4 L. |! i. x2 s5 c% Q: x9 x5 `# a9 L1 _3 Y
如果用到变量就如下:
, A+ @# n' P8 i' K- H# Q
( X7 ] D/ _4 n8 O6 r. o- ^strno=request.form("bookno")) Y& s5 b5 Q$ v) Q
strau=request.form("author")' w/ P4 W! D5 T( b$ D( }5 p
strsql="update book set author=’"&strau&"’ where bookno=’"&strno"’"
( D1 O: Z& ^) F g6 \8 o: B/ N, j& t8 L! T- _* M; q3 T) y
5 j q6 w4 N' n& I
5 i. X6 Y# u, c8 H6 p
5.Recordset对象的Update方法:* |8 e% y, c# h! k
语法:1 J- F/ P' N* _
3 x6 o) h! }: Y
rs("field1").value=value1
. B3 i9 S3 X; `8 s U. r0 l8 o( n3 Brs("field2").value=value27 T, a, V& R/ ]+ D9 A
...9 a2 h$ z/ n t7 W, ]" P1 X
rs.update
/ {' U! i, q! V8 [5 `5 v8 }
3 n% [: _( t/ a2 W; l3 ?
' y2 Y4 M+ J9 U! I7 M3 ]7 v& _ 注意:使用语法3和语法5的时候,一定要注意字段的类型(尤其是日期型)一致,否则出错的几率非常的高。+ c5 G( b5 r4 E3 V' ?
* [/ d' O7 D$ H& _ 例子:
* B/ t$ @6 }9 w' Y" n% H6 j& V3 g) ~. Z8 Z1 Z: k/ k4 ~
strno=request.form("bookno")0 Y9 m- [' ^4 C- Q
strau=request.form("author")7 e/ P4 E0 ~0 D$ u" w! u
set adocon=server.createobject("adodb.connection"). b0 [0 G; S Y
adocon.open "Driver={Microsoft Access Driver(*.mdb)};DBQ=" & _* ^# h2 s w0 c
Server.Mappath=("/cancer/cancer.mdb"); [2 X5 x* @* l( |! n: n# W8 \8 ~
strsql="select * from book where bookno=’"&strno&"’"9 G( W9 f( H5 K8 `
set rs=server.createobject("adodb.recordset")
* B5 g! N7 v) l( _& hrs.open strsql,adconn,1,3
/ z+ F/ i/ r% C+ O2 m2 Rif not rs.eof then ’如果有此记录的话/ }3 `* }1 k) f4 [+ ?; i8 a% y2 m
rs("author").value=strau
}( `% W& [" n" Z9 b; f# frs.update
' h. M8 ], o# d7 y( f$ _end if, A. d: i9 M$ q6 f2 Q8 i1 y
rs.close
, l2 @5 U% ]1 g) O6 Z8 F7 fset rs=nothing
6 P/ K9 L2 Q: X8 @; b1 `adocon.close
+ ]3 J# X }3 ?, c4 a* g1 g) pset adocon=nothing' ~( i7 ]6 c% |; J' Y6 V- x% X
! h& d8 i3 b+ o8 {+ O$ ~# w! d9 _: Z. ^1 S3 {
6.删除一条记录(Delete)4 M& r* K5 k# W
语法:# w$ Z5 o6 c2 u+ }' W; j$ n, i
y. T" @$ G* K# W9 ~& l1 u0 \
Delete table where field=value, U( O' r' q- G4 B6 s) [
. |$ k2 q2 Y* X6 N9 [* I
* Q3 L1 q' p6 \9 Y 例子:删除book表中作者是cancer的记录
4 K, S* T \. W1 y
: Y& J) N1 `6 idelete book where author=’cancer’6 X `& c, d5 P* f2 z! H: E
, @" ?) m/ C& O4 L. N% X
! h% l& \! o0 J: }) k6 F! @
(注意:如果book表中author字段的值为cancer的记录有多条,将会删除所有author为cancer的记录)
3 g5 W) T/ v" q/ E& [% \+ }8 A) M" b1 j/ T# Z
好了,学会了用这些操作,大家在用asp操作数据库的时候,该是没有什么问题了。
& g0 n; i3 M* B9 \$ G0 U @
|