熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

調整SqlDataSource控件的DataSourceMode屬性的方法

2022-06-13   來源: .NET編程 

  在 ASPNET 頁面中的控件若要展示數據庫的數據或要寫入數據庫時我們可從 VS 的「工具箱」中點選 DataSource 控件用鼠標拖曳輕松地建立數據庫聯機但在 SqlDataSource 控件中預設使用的聯機方式為具有「離線存取」功能的 DataSet 對象但就如章老師講的不需要進行「排序篩選與分頁」時根本沒必要浪費內存反而還犧牲了一些程序性能 (performance)

  因此若您的 ASPNET 頁面使用了 SqlDataSource 作為控件的數據來源應視需求再手動調整 DataSourceMode 屬性若您的 SqlDataSource 只是當作 LabelDropDownListListBox…等控件的數據綁定純粹用來「顯示」數據應如下圖 所示在 VS 在 SqlDataSource 的「屬性」窗口中將 DataSourceMode 屬性改為「DataReader」(預設為 DataSet)此舉不但可提升程序存取速度亦可節省 server 上因 DataSet 造成非必要的內存消耗但若您的 SqlDataSource是用來當作 GridView 控件的數據來源且 GridView 需要分頁排序篩選 (非指 TSQL 語句的 WHERE 或 JOINON而是指 DataSet 中的 DataTable 對象RowFilter 屬性對已從數據庫中撈取出來的數據再進行篩選) 這些功能即不用再手動調整 DataSourceMode 屬性直接使用默認的 DataSet 即可

  figure1

  圖  將 SqlDataSource 的 DataSourceMode 屬性從默認的 DataSet 改成 DataReader

  在 ADONET 中DataReader 可「單向 (順向)只讀」地讀取數據庫中的數據優點是讀取速度快不須耗用 server 額外的內存DataSet 則是一種可讓使用者「離線」存取數據的模式數據都會暫存至內存中有如可離線操作的數據庫 (大家可以先猜看看是存在 clientside 還是 serverside 的內存)

  DataSet 是從 ADONET x 開始微軟即大力推廣的「離線數據庫存取模式」是為了改善早年 ADO 必須持續保持聯機但在有大量用戶同時上線時常造成 web 應用程序運作性能上的致命傷如今透過 ADONET + DataSet 的離線模式當程序透過 ADONET 取得數據之後會立即和數據庫斷線以釋放資源但使用者仍可透過應用程序去存取內存中的數據庫 (DataSet)並在必要的時候 (例如要把修改過的數據回寫到數據庫)才再重新建立聯機回寫然後再斷線這樣的運作方式能有效地節省數據庫聯機資源改善過去 ASP 網站為人垢病遇到大量使用者同時存取時性能不彰的缺點

  「DataSet 離線機制」若用來開發同時間有大量用戶存取的網站時也可減少與 server 往返溝通的次數降低網絡的流量而「DataReader 實時聯機機制」在一般情況下的執行性能反而較好因為 DataReader 在「讀取」數據 (SQL SELECT) 的速度上一定會比 DataSet 快

  至於 ADONET 的離線機制其 DataSet 對象到底存儲在何處呢?就一些前輩們的使用經驗而言如果是一個 Windows Form 程序其所建立的 DataSet 對象會儲存在客戶端的計算機內存中它與後端 server 的數據來源是完全中斷連接的但如果是一個 Web Form 的 ASPNET 網頁則所建立的 DataSet 對象會儲存在 IIS server 的內存中

  此外在 ADONET DataTable 已可單獨存在不必再依附於 DataSet 中因此您也可視情況以 DataTable 替代 DataSet 來撷取操控數據如此亦可耗用較少的系統資源

  雖然根據官方的說法DataReader 的特性為只讀不允許使用者修改數據庫裡的數據但根據版工自行撰寫的簡單范例測試用 DataReader 做綁定的 TextBox使用者所輸入的數據仍可再寫入 SQL Server 關於這點根據台灣網絡上其它人的看法DataSourceMode 指的應該只是 SelectCommand (亦即以 SELECT 撷取數據的 SQL statement) 取回數據時所使用的一種「Mode」而已和 SqlDataSource 的其它指令無關其它指令使用的 SqlConnection 和 SqlCommand 是另外打開的應該與 SelectCommand 無關有興趣測試的網友可由本帖下方下載此一測試示例示例中並另外展示如何用 Validator (驗證控件) 去驗證 DropDownList 控件要求用戶至少要在 DropDownList 裡選擇一項才可按下按鈕將 Form 數據 submit


From:http://tw.wingwit.com/Article/program/net/201311/12302.html
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.