ASP常用數(shù)據(jù)庫連接及操作的方法和技巧

2010-08-28 10:47:45來源:西部e網(wǎng)作者:

1.ASP連接Access數(shù)據(jù)庫

<%
dim conn,mdbfile
mdbfile=server.mappath("數(shù)據(jù)庫名稱.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=數(shù)據(jù)庫密碼;dbq="&mdbfile
%>

2. ASP與SQL數(shù)據(jù)庫連接:

<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服務(wù)器名稱或IP地址;UID=sa;PWD=數(shù)據(jù)庫密碼;DATABASE=數(shù)據(jù)庫名稱
%>
建立記錄集對象:
Set rs=server.createobject("adodb.recordset")
rs.open SQL語句,conn,3,2

3. SQL常用命令使用方法:

(1) 數(shù)據(jù)記錄篩選:

sql="select * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 "
sql="select * from 數(shù)據(jù)表 where 字段名 like ‘%字段值%‘ order by 字段名 "
sql="select top 10 * from 數(shù)據(jù)表 where 字段名 order by 字段名 "
sql="select * from 數(shù)據(jù)表 where 字段名 in (‘值1‘,‘值2‘,‘值3‘)"
sql="select * from 數(shù)據(jù)表 where 字段名 between 值1 and 值2"

(2) 更新數(shù)據(jù)記錄:

sql="update 數(shù)據(jù)表 set 字段名=字段值 where 條件表達(dá)式"
sql="update 數(shù)據(jù)表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達(dá)式"

(3) 刪除數(shù)據(jù)記錄:

sql="delete from 數(shù)據(jù)表 where 條件表達(dá)式"
sql="delete from 數(shù)據(jù)表" (將數(shù)據(jù)表所有記錄刪除)

(4) 添加數(shù)據(jù)記錄:

sql="insert into 數(shù)據(jù)表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"
sql="insert into 目標(biāo)數(shù)據(jù)表 select * from 源數(shù)據(jù)表" (把源數(shù)據(jù)表的記錄添加到目標(biāo)數(shù)據(jù)表)

(5) 數(shù)據(jù)記錄統(tǒng)計(jì)函數(shù):

AVG(字段名) 得出一個(gè)表格欄平均值
COUNT(*|字段名) 對數(shù)據(jù)行數(shù)的統(tǒng)計(jì)或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計(jì)
MAX(字段名) 取得一個(gè)表格欄最大的值
MIN(字段名) 取得一個(gè)表格欄最小的值
SUM(字段名) 把數(shù)據(jù)欄的值相加

引用以上函數(shù)的方法:

sql="select sum(字段名) as 別名 from 數(shù)據(jù)表 where 條件表達(dá)式"
set rs=conn.excute(sql)

用 rs("別名") 獲取統(tǒng)的計(jì)值,其它函數(shù)運(yùn)用同上。

(5) 數(shù)據(jù)表的建立和刪除:

CREATE TABLE 數(shù)據(jù)表名稱(字段1 類型1(長度),字段2 類型2(長度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 數(shù)據(jù)表名稱 (永久性刪除一個(gè)數(shù)據(jù)表)

(6) 記錄集對象的方法:
rs.movenext 將記錄指針從當(dāng)前的位置向下移一行
rs.moveprevious 將記錄指針從當(dāng)前的位置向上移一行
rs.movefirst 將記錄指針移到數(shù)據(jù)表第一行
rs.movelast 將記錄指針移到數(shù)據(jù)表最后一行
rs.absoluteposition=N 將記錄指針移到數(shù)據(jù)表第N行
rs.absolutepage=N 將記錄指針移到第N頁的第一行
rs.pagesize=N 設(shè)置每頁為N條記錄
rs.pagecount 根據(jù) pagesize 的設(shè)置返回總頁數(shù)
rs.recordcount 返回記錄總數(shù)
rs.bof 返回記錄指針是否超出數(shù)據(jù)表首端,true表示是,false為否
rs.eof 返回記錄指針是否超出數(shù)據(jù)表末端,true表示是,false為否
rs.delete 刪除當(dāng)前記錄,但記錄指針不會(huì)向下移動(dòng)
rs.addnew 添加記錄到數(shù)據(jù)表末端
rs.update 更新數(shù)據(jù)表記錄

判斷所填數(shù)據(jù)是數(shù)字型

if not isNumeric(request("字段名稱")) then
response.write "不是數(shù)字"
else
response.write "數(shù)字"
end if

經(jīng)常使用到有關(guān)數(shù)據(jù)庫的操作。包括連接代碼、SQL命令等等,又不曾刻意去記憶它們(我本人是不愿意去記這東東),所以常常在用到的時(shí)候又去查書本,翻來翻去。一些比較少用的數(shù)據(jù)庫還不一定能順利找到,所以現(xiàn)在把它們?nèi)珰w納到這里,提供大家參考。

一、數(shù)據(jù)庫的連接方法:
1.Access數(shù)據(jù)庫的DSN-less連接方法:
set adocon=Server.Createobject("adodb.connection")
adoconn.Open"Driver={Microsoft Access Driver(*.mdb)};DBQ="& _
Server.MapPath("數(shù)據(jù)庫所在路徑")

2.Access OLE DB連接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Provider=Microsoft.Jet.OLEDB.4.0;"& _
"Data Source=" & Server.MapPath("數(shù)據(jù)庫所在路徑")

3.SQL server連接方法:

set adocon=server.createobject("adodb.recordset")
adocon.Open"Driver={SQL Server};Server=(Local);UID=***;PWD=***;"& _
"database=數(shù)據(jù)庫名;"

4.SQL server OLE DB連接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"provider=SQLOLEDB.1;Data Source=RITANT4;"& _
"user ID=***;Password=***;"& _
"inital Catalog=數(shù)據(jù)庫名"

5.Oracle 連接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"

6.Oracle OLE DB 連接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"

7.dBase 連接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"

8.mySQL 連接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;option=16386;"

9.Visual Foxpro 連接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"

10.MS text 連接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;"&_
"extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"

11.MS text OLE DB 連接方法:

set adocon=Server.Createobject("adodb.connection")
adocon.open"Provider=microsof.jet.oledb.4.0;data source=your_path;"&_
"Extended Properties'text;FMT=Delimited'"

<二>。常用的四種SQL命令:

1.查詢數(shù)據(jù)記錄(Select)
語法:Select 字段串行 From table Where 字段=內(nèi)容
例子:想從book表中找出作者為"cancer"的所有記錄,SQL語句便如下:
select * from book where author=’cancer’
"*"是取出book表所有的字段,如查詢的字段值為數(shù)字,則其后的"內(nèi)容"便無須加上單引號,

如是日期,則在Access中用(#)包括,而在SQL server中則用(’)包括,
如:

select * from book where id=1
select * from book where pub_date=#2002-1-7# (Access)
select * from book where pub_date=’2002-1-7’ (SQL Server)

提示:
日期函數(shù)to_date不是標(biāo)準(zhǔn)sql文,不是所有的數(shù)據(jù)庫適用,所以大家在使用的時(shí)候要參考數(shù)據(jù)庫具體語法

另外如果是查詢傳入的變量,則如下:

strau=request.form("author")
strsql="select * from book where author=’"&strau&"’"

如果查詢的是數(shù)字,則:

intID=request.form("id")
strsql="select * from book where id="&intID

在很多數(shù)據(jù)庫中,如:oracle,上面的語句是可以寫成:
strsql="select * from book where id='"&intID&"'"的。
但是字符型一定不能按照數(shù)字格式寫,需要注意。

2.添加記錄(Insert)
語法:Insert into table(field1,field2,....) Values (value1,value2,....)
例子:添加一作者是"cancer"的記錄入book表:
insert into book (bookno,author,bookname) values (’CF001’,’cancer’,’Cancer無組件上傳程序’)
同樣,如果用到變量就如下:

strno=request.form("bookno")
strau=request.form("author")
strname=request.form("bookname")
strsql="insert into book (bookno,author,bookname) values (’"&strno&"’,’"&strau&"’,’"&strname&"’)"

3.用Recordset對象的Addnew插入數(shù)據(jù)的方法:
語法:

rs.addnew
rs("field1").value=value1
rs("field2").value=value2
...
rs.update

4.修改數(shù)據(jù)記錄(Update)
語法:update table set field1=value1,field2=value2,...where fieldx=valuex
例子:update book set author=’babycrazy’ where bookno=’CF001’
如果用到變量就如下:

strno=request.form("bookno")
strau=request.form("author")
strsql="update book set author=’"&strau&"’ where bookno=’"&strno"’"

5.Recordset對象的Update方法:
語法:

rs("field1").value=value1
rs("field2").value=value2
...
rs.update

注意:使用語法3和語法5的時(shí)候,一定要注意字段的類型(尤其是日期型)一致,否則出錯(cuò)的幾率非常的高。


例子:

strno=request.form("bookno")
strau=request.form("author")
set adocon=server.createobject("adodb.connection")
adocon.open "Driver={Microsoft Access Driver(*.mdb)};DBQ=" & _
Server.Mappath=("/cancer/cancer.mdb")
strsql="select * from book where bookno=’"&strno&"’"
set rs=server.createobject("adodb.recordset")
rs.open strsql,adconn,1,3
if not rs.eof then ’如果有此記錄的話
rs("author").value=strau
rs.update
end if
rs.close
set rs=nothing
adocon.close
set adocon=nothing

6.刪除一條記錄(Delete)
語法:Delete table where field=value
例子:刪除book表中作者是cancer的記錄

delete book where author=’cancer’

(注意:如果book表中author字段的值為cancer的記錄有多條,將會(huì)刪除所有author為cancer的記錄)