伺服器端資料訪問

來源:互聯網
上載者:User
訪問|伺服器|資料 伺服器端資料訪問

  伺服器端資料介紹
  串連、命令和資料集
  訪問基於 SQL 的資料
  將 SQL 資料繫結到 DataGrid
  執行參數化選擇
  在 SQL 資料庫中插入資料
  更新 SQL 資料庫中的資料
  刪除 SQL 資料庫中的資料
  將 SQL 資料庫中的資料排序
  處理主-從關係
  編寫和使用預存程序
  訪問基於 XML 的資料
  本節小結



伺服器端資料介紹
資料訪問是任何實際應用程式的核心部分,而 ASP.NET 提供了一套豐富的控制項,這些控制項與公用語言運行庫中提供的管理的資料訪問 API 很好地整合在一起。 本節多次演練同一個樣本,該樣本使用 ASP.NET DataGrid 控制項綁定到 SQL 查詢的結果和 XML 資料檔案。 本節假定您熟悉資料庫基礎知識和 SQL 查詢語言。
伺服器端資料訪問很獨特,因為 Web 頁基本上是無狀態的。當試圖執行事務時,如插入或更新從資料庫檢索的資料集中的記錄時,這向我們提出了某些困難的挑戰。 正如將在本節中看到的,DataGrid 控制項可以協助應付這些挑戰,使您得以更多地集中在應用程式邏輯上,對狀態管理和事件處理的具體細節則不用考慮太多。



串連、命令和資料集
公用語言運行庫為資料密集的應用程式開發提供了完整的管理的資料訪問 API 集。 這些 API 協助抽象資料並用一致的方法表示資料,與實際的資料來源(SQL Server、OLEDB、XML 等)無關。 最常使用的對象基本上有三種:串連、命令和資料集。
串連表示與某些資料存放區區(如 SQL Server 或 XML 檔案)的物理串連。
命令表示從資料存放區區檢索(選擇)或對資料存放區區進行操作(插入、更新、刪除)的指令。
資料集表示應用程式使用的實際資料。 注意,資料集總是同它們的源串連和資料模型斷開並可獨立修改。 不過,資料集的更改可以很容易與起始資料模型相協調。
有關公用語言運行庫中管理的資料訪問解決方案的更詳細演練,請閱讀本教程的 ADO.NET 概述一節。

訪問基於 SQL 的資料
應用程式一般需要對 SQL 資料庫執行一個或多個選擇、插入、更新或刪除查詢。 下表顯示上述每個查詢的樣本。

查詢
樣本
簡單選擇
SELECT * from Employees WHERE FirstName = 'Bradley';
聯結選擇
SELECT * from Employees E, Managers M WHERE E.FirstName = M.FirstName;
插入
INSERT into Employees VALUES ('123-45-6789','Bradley','Millington','Program Manager');
更新
UPDATE Employees SET Title = 'Development Lead' WHERE FirstName = 'Bradley';
刪除
DELETE from Employees WHERE Productivity < 10;
為了使頁能夠訪問執行 SQL 資料訪問所需的類,必須將 System.Data 和 System.Data.SqlClient 命名空間匯入到頁中。

<%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %>

若要對 SQL 資料庫執行選取查詢,請建立與資料庫的 SqlConnection,傳遞連接字串,然後構造包含查詢語句的 SqlDataAdapter 對象。 若要用查詢結果填充 DataSet 對象,請調用命令的 Fill 方法。

SqlConnection myConnection = new SqlConnection("server=(local)\NetSDK;database=pubs;Trusted_Connection=yes"); SqlDataAdapter myCommand = new SqlDataAdapter("select * from Authors", myConnection); DataSet ds = new DataSet(); myCommand.Fill(ds, "Authors"); Dim myConnection As New SqlConnection("server=(local)\NetSDK;database=pubs;Trusted_Connection=yes") Dim myCommand As New SqlDataAdapter("select * from Authors", myConnection) Dim ds As New DataSet() myCommand.Fill(ds, "Authors") var myConnection:SqlConnection = new SqlConnection("server=(local)\NetSDK;database=pubs;Trusted_Connection=yes"); var myCommand:SqlDataAdapter = new SqlDataAdapter("select * from Authors", myConnection); var ds:DataSet = new DataSet(); myCommand.Fill(ds, "Authors");
正如本節前面所提到的,使用資料集的好處是它為您提供了中斷連線的資料庫檢視。 可以在應用程式中操作資料集,然後在以後協調更改和實際的資料庫。 對於長期啟動並執行應用程式,這通常是最好的方法。 對於 Web 應用程式,通常對每個請求執行短操作(一般只是顯示資料)。 通常不需要在一系列請求間保持 DataSet 對象。 對於這類情況,可以使用 SqlDataReader。
SqlDataReader 對從 SQL 資料庫檢索的資料提供僅向前的唯讀指標。 因為 SqlDataReader 使用表格式資料流 (TDS) 直接從資料庫連接讀取資料,因此它如果可以用於方案,其執行效率會比 DataSet 高。
若要使用 SqlDataReader,請聲明 SqlCommand 而不是 SqlDataAdapter。 SqlCommand 公開返回 SqlDataReader 的 ExecuteReader 方法。 還請注意,當使用 SqlCommand 時,必須顯式開啟和關閉 SqlConnection。 調用 ExecuteReader 後,SqlDataReader 可以綁定到 ASP.NET 伺服器控制項,正如將在下一節看到的。
<Tab Name="C#">
SqlConnection myConnection = new SqlConnection("server=(local)\NetSDK;database=pubs;Trusted_Connection=yes"); SqlCommand myCommand = new SqlCommand("select * from Authors", myConnection);

myConnection.Open();


SqlDataReader dr = myCommand.ExecuteReader();

...

myConnection.Close();
</Tab>

<Tab Name="VB">
Dim myConnection As SqlConnection = New SqlConnection("server=(local)\NetSDK;database=pubs;Trusted_Connection=yes") Dim myCommand As SqlCommand = New SqlCommand("select * from Authors", myConnection)

myConnection.Open()


Dim dr As SqlDataReader = myCommand.ExecuteReader()

...

myConnection.Close()
</Tab>

<Tab Name="JScript">
var myConnection:SqlConnection = new SqlConnection("server=(local)\NetSDK;database=pubs;Trusted_Connection=yes"); var myCommand:SqlCommand = new SqlCommand("select * from Authors", myConnection);

myConnection.Open();

var dr : SqlDataReader; dr = myCommand.ExecuteReader();

...

myConnection.Close();
</Tab>
當執行不要求返回資料的命令(如插入、更新和刪除)時,也使用 SqlCommand。 該命令通過調用 ExecuteNonQuery 方法發出,而此方法返回受影響的行數。 注意當使用 SqlCommand 時,必須顯式開啟串連;SqlDataAdapter 自動為您處理如何開啟串連。
<Tab Name="C#"> SqlConnection myConnection = new SqlConnection("server=(local)\NetSDK;database=pubs;Trusted_Connection=yes"); SqlCommand myCommand = new SqlCommand( "UPDATE Authors SET phone='(800) 555-5555' WHERE au_id = '123-45-6789'", myConnection);

myCommand.Connection.Open(); myCommand.ExecuteNonQuery(); myCommand.Connection.Close();
</Tab>

<Tab Name="VB"> Dim myConnection As New SqlConnection("server=(local)\NetSDK;database=pubs;Trusted_Connection=yes") Dim myCommand As New SqlCommand( _ "UPDATE Authors SET phone='(800) 555-5555' WHERE au_id = '123-45-6789'", _ myConnection)

myCommand.Connection.Open() myCommand.ExecuteNonQuery() myCommand.Connection.Close()
</Tab>

<Tab Name="JScript"> var myConnection:SqlConnection = new SqlConnection("server=(local)\NetSDK;database=pubs;Trusted_Connection=yes"); var myCommand:SqlCommand = new SqlCommand( "UPDATE Authors SET phone='(800) 555-5555' WHERE au_id = '123-45-6789'", myConnection);

myCommand.Connection.Open(); myCommand.ExecuteNonQuery(); myCommand.Connection.Close();
</Tab>

重要說明:始終記住在頁完成執行之前關閉與資料模型的串連。 如果不關閉串連,則可能會在等待頁執行個體被記憶體回收處理期間不經意地超過串連限制。

將 SQL 資料繫結到 DataGrid
下面的樣本顯示一個綁定到 DataGrid 控制項的簡單選取查詢。 DataGrid 呈現包含 SQL 資料的表。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。