asp常用數(shù)據(jù)庫(kù)連接方法和技巧
轉(zhuǎn)貼:snow 日期:2005-02-28 人氣:19
轉(zhuǎn)貼:snow 日期:2005-02-28 人氣:19
<%
dim conn,mdbfile
mdbfile=server.mappath("數(shù)據(jù)庫(kù)名稱(chēng).mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=數(shù)據(jù)庫(kù)密碼;dbq="&mdbfile
%>
2. ASP與SQL數(shù)據(jù)庫(kù)連接:
<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服務(wù)器名稱(chēng)或IP地址;UID=sa;PWD=數(shù)據(jù)庫(kù)密碼
;DATABASE=數(shù)據(jù)庫(kù)名稱(chēng)
%>
建立記錄集對(duì)象:
set rs=server.createobject("adodb.recordset")
rs.open SQL語(yǔ)句,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(*|字段名) 對(duì)數(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ù)表名稱(chēng)(字段1 類(lèi)型1(長(zhǎng)度),字段2 類(lèi)型2(長(zhǎng)度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 數(shù)據(jù)表名稱(chēng) (永久性刪除一個(gè)數(shù)據(jù)表)
(6) 記錄集對(duì)象的方法:
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頁(yè)的第一行
rs.pagesize=N 設(shè)置每頁(yè)為N條記錄
rs.pagecount 根據(jù) pagesize 的設(shè)置返回總頁(yè)數(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("字段名稱(chēng)")) then
response.write "不是數(shù)字"
else
response.write "數(shù)字"
end if
經(jīng)常使用到有關(guān)數(shù)據(jù)庫(kù)的操作。包括連接代碼、SQL命令等等,又不曾刻意去記憶它們(我本人是不愿意
去記這東東),所以常常在用到的時(shí)候又去查書(shū)本,翻來(lái)翻去。一些比較少用的數(shù)據(jù)庫(kù)還不一定能順利找
到,所以現(xiàn)在把它們?nèi)珰w納到這里,提供大家參考。(個(gè)人水平有限,有缺陷之處,歡迎大家指正。)
<一>。數(shù)據(jù)庫(kù)的連接方法:
1.Access數(shù)據(jù)庫(kù)的DSN-less連接方法:
set adocon=Server.Createobject("adodb.connection")
adoconn.Open"Driver={Microsoft Access Driver(*.mdb)};DBQ="& _
Server.MapPath("數(shù)據(jù)庫(kù)所在路徑")
2.Access OLE DB連接方法:
set adocon=Server.Createobject("adodb.connection")
adocon.open"Provider=Microsoft.Jet.OLEDB.4.0;"& _
"Data Source=" & Server.MapPath("數(shù)據(jù)庫(kù)所在路徑")
3.SQL server連接方法:
set adocon=server.createobject("adodb.recordset")
adocon.Open"Driver={SQL Server};Server=(Local);UID=***;PWD=***;"& _
"database=數(shù)據(jù)庫(kù)名;"
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ù)庫(kù)名"
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)
語(yǔ)法:Select 字段串行 From table Where 字段=內(nèi)容
例子:想從book表中找出作者為"cancer"的所有記錄,SQL語(yǔ)句便如下:
select * from book where author=’cancer’
"*"是取出book表所有的字段,如查詢的字段值為數(shù)字,則其后的"內(nèi)容"便無(wú)須加上單引號(hào),
如是日期,則在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ù)庫(kù)適用,所以大家在使用的時(shí)候要參考數(shù)據(jù)庫(kù)具體語(yǔ)法
另外如果是查詢傳入的變量,則如下:
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ù)庫(kù)中,如:oracle,上面的語(yǔ)句是可以寫(xiě)成:
strsql="select * from book where id='"&intID&"'"的。
但是字符型一定不能按照數(shù)字格式寫(xiě),需要注意。
2.添加記錄(Insert)
語(yǔ)法:Insert into table(field1,field2,....) Values (value1,value2,....)
例子:添加一作者是"cancer"的記錄入book表:
insert into book (bookno,author,bookname) values (’CF001’,’cancer’,’Cancer無(wú)組件上傳程
序’)
同樣,如果用到變量就如下:
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對(duì)象的Addnew插入數(shù)據(jù)的方法:
語(yǔ)法:
rs.addnew
rs("field1").value=value1
rs("field2").value=value2
...
rs.update
4.修改數(shù)據(jù)記錄(Update)
語(yǔ)法: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對(duì)象的Update方法:
語(yǔ)法:
rs("field1").value=value1
rs("field2").value=value2
...
rs.update
注意:使用語(yǔ)法3和語(yǔ)法5的時(shí)候,一定要注意字段的類(lèi)型(尤其是日期型)一致,否則出錯(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)
語(yǔ)法:Delete table where field=value
例子:刪除book表中作者是cancer的記錄
delete book where author=’cancer’
(注意:如果book表中author字段的值為cancer的記錄有多條,將會(huì)刪除所有author為cancer的記錄)