⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ado网站资料库技术速成.txt

📁 用纯ASP代码实现图片上传并存入数据库中
💻 TXT
📖 第 1 页 / 共 2 页
字号:

</TABLE>

<A href=rs13.asp?sel=first>第一筆</A>

<% if Session("position") > 0 then %>

<A href=rs13.asp?sel=prev>上一筆</A>

<% end if %>

<% if Session("position") < rs2.RecordCount -1 then %>

<A href=rs13.asp?sel=next>下一筆</A>

<% end if %>

<A href=rs13.asp?sel=last>最末筆</A>

<A href=rs13.asp?sel=set>設定Bookmark</A>

<A href=rs13.asp?sel=go>到Bookmark</A>

<% rs2.Close %>

由Session("bk")儲存這個使用者RecordSet 的bookmark(書籤)位置,當按下 [設定Bookmark] 超連結時,由<A href=rs13.asp?sel=set>設定Bookmark</A>,將sel設定為set,並重新執行rs13.asp的asp碼。由以下的程式部份,首先rs2.Move Session("position")回到上次的位置,然後使用Session("bk") = rs2.Bookmark設定書籤,Session("Bookmark")儲存書籤記號的名稱:

if Request("sel") = "last" then 

rs2.MoveLast

elseif Request("sel") = "first" then 

rs2.MoveFirst

elseif Request("sel") = "prev" then

Session("position") = Session("position") - 1

rs2.Move Session("position")

elseif Request("sel") = "next" then

Session("position") = Session("position") + 1

rs2.Move Session("position")

elseif Request("sel") = "set" then 

rs2.Move Session("position")

Session("bk") = rs2.Bookmark 

elseif Request("sel") = "go" then 

rs2.Bookmark = Session("bk")

else

Session("position") = 0

end if

當按下 [到Bookmark] 超連結時,由<A href=rs13.asp?sel=go>到Bookmark</A>,將sel設定為go,並重新執行rs13.asp的asp碼。由以上的程式部份,由rs2.Bookmark = Session("bk")回到上次書籤記號的位置。





--------------------------------------------------------------------------------
ado网站资料库技术速成(三)    


--------------------------------------------------------------------------------

 【yanzi】 于 99-4-8 11:06:02 下午 加贴在 Joy ASP ↑:



ADO存取資料庫如何顯示上一頁下一頁?

若要於RecordSet移動到上一頁下一頁的位置,必須學會以下RecordSet物件的屬性:


PageSize屬性:設定每一頁顯示的記錄筆數。


PageCount屬性:得知資料記錄的總頁數。


AbsolutePage屬性:設定顯示第幾頁的記錄筆數。


RecordCount屬性:得知Recordset物件中資料記錄的總數目。


MaxRecords屬性:得知和設定傳到Recordset物件資料記錄的最大數目,預設值為0表示無限制。

顯示上一頁下一頁的例子

讓我們看一個於ASP程式碼當中使用PageSize/PageCount/ AbsolutePage/RecordCount顯示上一頁下一頁的例子。

譬如ASP程式碼如下:

<%

if Request("page") = "" then 

page = 1

else

page = CINT(Request("page"))

end if

Set conn1 = Server.CreateObject("ADODB.Connection") 

conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;" 

Set rs2 = Server.CreateObject("ADODB.Recordset")

SqlStr = "SELECT * From 產品"

rs2.Open SqlStr,conn1,1,1

rs2.PageSize = 5

rs2.AbsolutePage = page

%>

第 <% =page %> 頁 / 計 <% =rs2.PageCount %> 頁 (計 <% =rs2.RecordCount %> 筆)

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代號</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名稱</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">價格</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">數量</FONT></TD>

</TR>

<% For i = 1 To rs2.PageSize %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("代號")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("名稱")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("價格")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("數量")%></TD>

</TR> 

<% 

rs2.MoveNext 

If rs2.EOF Then Exit For 

Next 

%>

</TABLE>

<% if page > 1 then %>

<A href=rs16.asp?page=<% =page -1 %> >上一頁</A>

<% end if %>

<% if page < rs2.PageCount then %>

<A href=rs16.asp?page=<% =page +1 %> >下一頁</A>

<% end if %>

<%

rs2.Close

conn1.Close

Set objCommand = Nothing

Set rs2 = Nothing

Set conn1 = Nothing

%>

當按下 [下一頁] 超連結時,由<A href=rs16.asp?page=<% =page +1 %> >下一頁</A>,將page設定為加一,並重新執行rs16.asp的asp碼。由page = CINT(Request("page"))設定page值。

首先於PageSize屬性設定每一頁顯示的記錄筆數為5,再於AbsolutePage屬性設定顯示第page頁的記錄筆數,程式部份如下:

rs2.PageSize = 5

rs2.AbsolutePage = page

由PageCount屬性得知資料記錄的總頁數,由RecordCount屬性得知資料記錄的總筆數,程式部份如下:

第 <% =page %> 頁 / 計 <% =rs2.PageCount %> 頁 (計 <% =rs2.RecordCount %> 筆)

最後由For i = 1 To rs2.PageSize…Next,將於PageSize屬性設定每一頁顯示的記錄筆數逐一顯示出來。

為了判斷是否要顯示 [上一頁] [下一頁] 超連結,由以下的程式部份:

<% if page > 1 then %>

<A href=rs16.asp?page=<% =page -1 %> >上一頁</A>

<% end if %>

<% if page < rs2.PageCount then %>

<A href=rs16.asp?page=<% =page +1 %> >下一頁</A>

<% end if %>

就可以使用page,比較第一頁1和總頁數PageCount,即可判斷是否要顯示 [上一頁] [下一頁] 超連結。





--------------------------------------------------------------------------------
ado网站资料库技术速成(四)(BIG5)    


--------------------------------------------------------------------------------

 【yanzi】 于 99-4-8 11:10:02 下午 加贴在 Joy ASP ↑:

ADO如何提供異動(transaction)功能?

BeginTrans/CommitTrans/Rollback方法

當您必須更新多個資料表中的資料欄位時,並確保在所有的資料表中所作的改變都被完成(確認Commit)、或者不變(撤銷復原Rollback)時,您可以使用異動(transaction)來維護資料的完整性。

例如,當您將錢從甲帳戶匯到另一個乙帳戶時,需要從甲帳戶上減去一個數並加到另一個乙帳戶上。如果其中有一個更新失敗,帳戶就不會平衡。

使用異動(transaction)功能時,對資料所做的任何改變都可撤銷復原(Rollback),或者可以確認(Commit)儲存所有對資料庫的改變。

加上異動(transaction)功能的方法,為在更新第一筆資料欄位前,先使用BeginTrans 方法,然後,只要有任何更新失敗,就可以使用RollbackTrans方法撤銷所有的更新。當您成功地更新最後一筆資料欄位之後,就可使用CommitTrans方法確認(Commit)儲存到資料庫。

ADO有三種支援異動處理的方法:BeginTrans、CommitTrans、與Rollback。但是,資料庫本身也必須支援異動處理的功能,譬如SQL Server提供異動(transaction)處理的功能,但是Access則未提供。


BeginTrans:開始一個異動處理,一旦開始一個異動處理,就必須在關閉資料庫或應用程式之前使用CommitTrans或Rollback。當應用程式結束時,沒有交付確認(Commit)的異動要自動復原。


CommitTrans:將改變儲存到資料庫中。用BeginTrans方法開啟異動處理以後,CommitTrans方法將RecordSet所有的改變儲存到資料庫。執行CommitTrans時,所有改變成為永久性的改變。


Rollback:撤銷復原,倒退或者撤銷目前異動處理中所有已改變的資料。它同時終止異動處理。

異動(transaction)例子

讓我們看一個於ASP程式碼當中使用BeginTrans/ CommitTrans/RollbackTrans提供異動(transaction)功能的例子。

本例子,使用RecordSet 的Requery方法,重新執行SELECT指令載入資料到RecordSet。

執行本例子的資料庫必須支援異動處理的功能,譬如SQL Server提供異動(transaction)處理的功能,但是Access則未提供。

譬如ASP程式碼如下,使用BeginTrans方法開始一個異動處理,將 [檔案下載] 資料表每一筆記錄的 [檔案下載次數] 欄位加上100,再使用CommitTrans方法將RecordSet所有的改變儲存到資料庫。或者使用Rollback方法,撤銷目前異動處理中所有已改變的資料:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=comPak"

Set rs2 = Server.CreateObject("ADODB.Recordset")

sql = "SELECT * FROM 檔案下載" 

rs2.Open sql,conn1,1,2,1

conn1.BeginTrans

Do while not rs2.EOF

if IsNull(rs2("檔案下載次數")) then rs2("檔案下載次數") = 100

rs2("檔案下載次數") = rs2("檔案下載次數") + 100

rs2.MoveNext

Loop

conn1.CommitTrans

'conn1.RollbackTrans

rs2.Requery

'rs2.Close

'Set rs2 = Server.CreateObject("ADODB.Recordset")

'sql = "SELECT * FROM 檔案下載" 

'rs2.Open sql,conn1,1,2,1

%>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名稱</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">檔案下載檔案</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">檔案下載次數</FONT></TD>

</TR>

<% Do while not rs2.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("名稱")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("檔案下載檔案")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs2("檔案下載次數")%></TD>

</TR> 

<% 

rs2.MoveNext 

Loop

%>

每執行一次,會將 [檔案下載] 資料表每一筆記錄的 [檔案下載次數] 欄位加上100。

UpdateBatch/CancelBatch (SQL Server)

您可以使用UpdateBatch方法,將多筆變更的記錄,批次寫回到資料庫。

使用UpdateBatch方法時,不必每一筆變更記錄都下一個Update方法,多筆記錄一起變更,最後再使用UpdateBatch方法,寫回到資料庫。或是使用CancelBatch方法,放棄所有的變更。

執行本例子的資料庫必須支援UpdateBatch批次變更處理的功能,譬如SQL Server提供UpdateBatch的功能,但是Access則未提供。

譬如ASP程式碼如下,將 [檔案下載] 資料表每一筆記錄的 [檔案下載次數] 欄位加上10,再使用UpdateBatch方法將RecordSet所有的改變儲存到資料庫。或者使用CancelBatch方法,放棄所有的變更:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=comPak"

Set rs3 = Server.CreateObject("ADODB.Recordset")

sql = "SELECT * FROM 檔案下載" 

rs3.Open sql,conn1,1,4

Do while not rs3.EOF

if IsNull(rs3("檔案下載次數")) then rs3("檔案下載次數") = 10

rs3("檔案下載次數") = rs3("檔案下載次數") + 10

rs3.MoveNext

Loop

rs3.UpdateBatch

'rs3.CancelBatch

rs3.Requery

%>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名稱</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">檔案下載檔案</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">檔案下載次數</FONT></TD>

</TR>

<% Do while not rs3.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名稱")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("檔案下載檔案")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("檔案下載次數")%></TD>

</TR> 

<% 

rs3.MoveNext 

Loop

%>

</TABLE>

<%

rs3.Close

conn1.Close

%>

以上的 ASP程式碼,於用戶端使用瀏覽器,顯示代號重覆的記錄。

其中rs3.Open sql,conn1,1,4的4表示為批次樂觀鎖定(Batch Optimistic lock),使用UpdateBatch方法將多筆變更的記錄批次寫回到資料庫時,才鎖定此批資料記錄。

每執行一次,會將 [檔案下載] 資料表每一筆記錄的 [檔案下載次數] 欄位加上10。

網站資料庫設計參考資料

作者準備一個展示各種網站資料庫設計實例的網站,提供各種網站網頁的資訊、與設計範例,包括『網站熱門應用精選』、IIS特異功能、Web資料庫設計實例、網路商店、ActiveX、推播頻道、動態HTML、HTML 99招等,網址如下:

http://www.asp.com.tw

歡迎上網光臨指教。

另外筆者最新著作為「ASP網站熱門應用技術」、「微軟熱門Web技術速成班」,對網站的技術提供更多的探討,歡迎參考。


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -