關於ASP連線資料庫和資料操作

2021-04-02 20:48:44 字數 4911 閱讀 9028

在asp中,主要通過ado(active data objects)方式實現連線訪問資料庫。主要相關三種物件:connection、recordset 、command和fields。

connection:負責開啟或連線資料。

recordset:負責訪問資料表。

command:負責對資料庫執行行動查詢命令。

field 物件代表使用普通資料型別的資料的列。

舉例說明:

共同dim conn

dim rs

dim system_path

dim path    

set conn = server.createobject("adodb.connection") 

system_path  = "../"

一、 asp資料庫連線

連線各資料庫可以使用驅動程式,也可以使用資料來源,使用驅動程式非常方便、簡單,而使用資料來源比較麻煩。 

1. 連線access

conn.open "driver=;dbq=" & path

2. 連線sqlserver

conn.open "provider=sqloledb.1;persist security info=false;user id=sa;password=;initial catalog=xuejie;data source=erpsv01 "                     

3. 連線oracle

conn.open  "provider=oraoledb.oracle.1;persist security info=true;user id=shc;password=shc;data source=hctg"

二、 asp資料操作

1. 六個實用小函式 

(1). 關閉連線

public sub dbdisconnect()

conn.close

set conn = nothing

end sub

(2). 建立記錄集

public sub rsconnect(byval strsql)

set rs=server.createobject("adodb.recordset")

rs.open ssqlstr,cnnpub,1,1

end sub

(3).關閉記錄集

public sub rsdisconnect()

rs.close

set rs=nothing 

end sub

(4).建立sql文查詢

public sub sqlconnect(byval strsql)

dbconnect()

rsconnect(strsql)

end sub

(5).關閉sql文查詢

public sub sqldisconnect()

rsdisconnect()

dbdisconnect()

end sub

(6).建立sql更新同時關閉

public sub sqlexecute(byval strsql)

dbconnect()  

conn.execute(strsql)

dbdisconnect()

end sub

補充說明關於小函式2:

rs.open ssqlstr,cnnpub,1,3中最後2個引數

cursortype,locktype

cursortype:

0(adopenforwardonly): 只能在recordset的記錄中向前移動,但速度最快。

1(dopenkeyset):可以在recordset中任意移動,其他使用者所做的記錄修改可見,但其他使用者新增的記錄不可見,刪除的記錄字段值不能被使用。 

2(adopendynamic):可以在recordset中任意移動,其他使用者增、刪、改的記錄都可見,但速度最慢。 

3(dopenstatic):可以在recordset中任意移動,其他使用者增、刪、改的記錄都不可見。 

locktype:

0(adlockreadonly):recordset的記錄為唯讀

1(adlockpessimistic):只要保持recordset為開啟,別人就無法編輯該記錄集中的記錄. 

2(adlockoptimistic):當update recordset中的記錄時,將記錄加鎖

3(adlockbatchoptimistic):以批模式時更新記錄時加鎖 

注意如果發生recordcount=-1問題主要是由於記錄集游標是伺服器游標引起的,解決方法是

可以追加設定rs.cursorlocation = 3或者保持rs.open ssqlstr,cnnpub,1,3(cursortype不能設定成2)的設定。

2. recordset 物件 

recordset 物件表示的是來自基本表或命令執行結果的記錄全集。任何時候,recordset 物件所指的當前記錄均為集合內的單個記錄。

(1)bof屬性 指示當前記錄位置位於 recordset 物件的第乙個記錄之前,返回布林型值。

if rs.bof then

(2)eof屬性 指示當前記錄位置位於 recordset 物件的最後乙個記錄之後,返回布林型值。           

if rs.eof then

(3)movefirst | movelast | movenext | moveprevious屬性 

使用movefirst 方法將當前記錄位置移動到 recordset 中的第乙個記錄。

使用movelast 方法將當前記錄位置移動到 recordset 中的最後乙個記錄。recordset 物件必須支援書籤或向後游標移動;否則呼叫該方法將產生錯誤。

使用movenext 方法將當前記錄向前移動乙個記錄(向 recordset 的底部)。如果最後乙個記錄是當前記錄並且呼叫 movenext 方法,則 ado 將當前記錄設定到 recordset (

eof 為 true)的尾記錄之後。當 eof 屬性已經為 true 時試圖向前移動將產生錯誤。

使用moveprevious 方法將當前記錄位置向後移動乙個記錄(向記錄集的頂部)。recordset 物件必須支援書籤或向後游標移動;否則方法呼叫將產生錯誤。如果首記錄是當前記錄並且呼叫 moveprevious 方法,則 ado 將當前記錄設定在 recordset (bof 為 true)的首記錄之前。而 bof 屬性為 true 時向後移動將產生錯誤。如果 recordset 物件不支援書籤或向後游標移動,則 moveprevious 方法將產生錯誤。

例如:rs.movenext

(4)absolutepage屬性 識別當前記錄所在的頁碼 

例如:rs.absolutepage=1

(5)absoluteposition 屬性 可根據其在 recordset 中的序號位置移動到記錄,或確定當前記錄的序號位置。提供者必須支援該屬性的相應功能才能使用該屬性。                      

(6)pagecount屬性 確定 recordset 物件中資料的頁數。「頁」是大小等於 pagesize 設定的記錄組。 該值為 -1 以表明 pagecount 無法確定。

例如:totalpages = rs.pagecount

(7)pagesize 屬性 可確定組成邏輯資料頁的記錄數。

例如:pagesize = 10

(8)recordcount 屬性 可確定recordset物件中記錄的數目。

例如:total = rs.recordcount

3. 資料操作

(1)不用游標

查詢:

call sqlconnect(sql) 

do while not rs.eof

if cint(i) mod 2 = 0 then

else

end if

<%=i%>

rs.movenext

i=i+1

loop

call sqldisconnect

追加更新削除:

call sqlexecute (sql)

(2)用游標                 

查詢:

rs.cursorlocation = 2

rs.open sql,conn,1,3

do while not rs.eof

redim preserve s(i)

(i) = rs("xx")

i = i + 1

rs.movenext

loop

rs.close

追加:

sql = "select * from *** where xx='' "(oracle,sqlserver)

sql = "select * from *** where xx=-1"(access)

rs.cursorlocation = 2

rs.open sql,conn,1,3

rs.addnew

rs("***") = ***

rs.update

rs.close

更新:

sql = "select * from *** where xx='" & xx & "'"

rs.cursorlocation = 2

rs.open sql,conn,1,3   

rs("xx") = 2

rs.update

rs.close

削除:

sql="delete from ***x where xx='"&xx&"'"

rs.cursorlocation=2

rs.open sql,conn,1,3 

asp連線資料庫示例

asp連線sql server資料庫 odbc set conn server.createobject adodb.connection connstr driver server local uid sa pwd sa database system conn.open connstr asp連...

連線資料庫操作

有一段時間沒有寫部落格了,今天我來說說資料庫的連線操作。首先我都知道ado.net這門技術,其實我自己之前也學過幾次,但只學了一點皮毛,跟著老師走也看得懂,但是自己就不會敲出來,前段時間我又在學習這個,也覺得自己這次應該是真的學懂了吧!我們就以mssqlserver為例來講解資料庫連線操作,首先我們...

ASP連線資料庫幾種方式

一 access 4.建odbc源 set conn server.createobject adodb.connection conn.open dsn uid pwd database customer 二 sql asp與sql資料庫連線 第一種寫法 mm conn string driver...