1 / 38

第 13 章 ADO.NET建立網頁資料庫

第 13 章 ADO.NET建立網頁資料庫. 13-1 網頁資料庫的基礎 13-2 建立資料庫連接 13-3 ADO.NET 的 DataReader 物件. 13-1 網頁資料庫的基礎. 13-1-1 資料庫系統 13-1-2 ASP.NET 與資料庫 13-1-3 ADO.NET 的簡介 13-1-4 如何建立 ASP.NET 網頁資料庫. 13-1-1 資料庫系統 - 說明. 資料庫系統本身就是一套應用程式,目前的主流是關聯式資料庫系統,例如: Access 、 MySQL 、 SQL Server 和 Oracle 等。

hall-jarvis
Download Presentation

第 13 章 ADO.NET建立網頁資料庫

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第13章 ADO.NET建立網頁資料庫 • 13-1 網頁資料庫的基礎 • 13-2 建立資料庫連接 • 13-3 ADO.NET的DataReader物件

  2. 13-1 網頁資料庫的基礎 • 13-1-1 資料庫系統 • 13-1-2 ASP.NET與資料庫 • 13-1-3 ADO.NET的簡介 • 13-1-4 如何建立ASP.NET 網頁資料庫

  3. 13-1-1 資料庫系統-說明 • 資料庫系統本身就是一套應用程式,目前的主流是關聯式資料庫系統,例如:Access、MySQL、SQL Server和Oracle等。 • 可以使用SQL資料庫語言來儲存和管理所需資料。

  4. 13-1-1 資料庫系統-資料庫的組成:資料表、記錄與欄位1

  5. 13-1-1 資料庫系統-資料庫的組成:資料表、記錄與欄位2 • 資料表可以使用「索引」(Index)將資料系統化的整理,以便在大量資料中快速找到所需的資料或進行排序。 • 例如:在通訊錄資料表使用編號欄位建立主索引鍵,或稱為「主鍵」(Primary Key),如此就可以透過編號來加速資料表記錄的搜尋和排序。

  6. 13-1-2 ASP.NET與資料庫 • 網頁資料庫是一種結合前端HTML文件或Web表單的使用介面,配合後端Web伺服器和資料庫系統的一種應用程式架構,如下圖所示:

  7. 13-1-3 ADO.NET的簡介 • ADO.NET是是「ADO」(ActiveX Data Object)元件的後繼者,其主要目的是在.NET Framework平台存取資料。 • 以ASP.NET來說,ADO.NET的主要功能是存取資料庫,所以ASP.NET使用ADO.NET,一般來說都是為了建立網頁資料庫。

  8. 13-1-4 如何建立ASP.NET網頁資料庫 • ASP.NET配合ADO.NET建立網頁資料庫的步驟,如下所示: • 建立資料庫 • 建立資料庫連接:使用ADO.NET的OLE DB提供者來建立資料庫連接。 • 存取資料庫:使用ADO.NET的DataReader或DataSet來存取資料庫的記錄資料。 • 執行網頁資料庫:啟動瀏覽程式執行ASP.NET程式,以便測試網頁資料庫的執行結果。

  9. 13-2 建立資料庫連接 • 13-2-1 ADO.NET的名稱空間 • 13-2-2 建立Connection物件

  10. 13-2-1 ADO.NET的名稱空間 • ASP.NET程式需要匯入指定的名稱空間,才能使用ADO.NET類別來存取資料庫。

  11. 13-2-2 建立Connection物件-說明 • Connection物件可以建立ASP.NET程式與存取資料來源的連結和初始資料庫。 • Connection物件有兩種: • OLE DB是使用OleDbConnection物件。 • SQL Server是使用SqlConnection物件。

  12. 13-2-2 建立Connection物件-匯入名稱空間 • 在ASP.NET程式需要匯入所需名稱空間,才能使用ADO.NET的類別和物件,如下所示: <%@ Import Namespace="System.Data" %> <%@ Import NameSpace="System.Data.OleDb" %> • SQL Server與SQL Server Express匯入的名稱空間: <%@ Import Namespace="System.Data" %> <%@ Import NameSpace="System.Data.SqlClient" %>

  13. 13-2-2 建立Connection物件-步驟一:建立Connection物件1 • 在ASP.NET程式建立Connection物件,就是宣告和建立OleDbConnection物件變數objCon,如下所示: OleDbConnection objCon = new OleDbConnection(strDbCon); • 程式碼使用new運算子建立名為objCon的OleDbConnection物件,strDbCon變數是資料來源字串,如下所示: string strDbCon="Provider=Microsoft.Jet.OLEDB.4.0;“ + "Data Source=" + Server.MapPath("iPods.mdb");

  14. 13-2-2 建立Connection物件-步驟一:建立Connection物件2 • 連接SQL Server與SQL Server Express資料庫的SqlConnection物件,如下所示: strDbCon = "server=localhost;database=iPods;uid=sa;pwd=1234"; SqlConnection objCon = new SqlConnection(strDbCon); • 另一種寫法,如下所示: strDbCon="user id=sa;password=1234; ;" + "initial catalog=iPods;" + "data source=localhost";

  15. 13-2-2 建立Connection物件-步驟一:建立Connection物件3 • 至於SQL Server 2005 Express的連接字串,如下所示: strDbCon="Data Source=.\SQLEXPRESS;AttachDbFilename=" + Server.MapPath("iPods.mdf") + ";Integrated Security=True;" + "TrustServerCertificate=False;" + "User Instance=True;Context Connection=False"; • 上述連接字串的Data Source屬性是.\SQLEXPRESS,AttachDbFilename屬性是資料庫名稱,副檔名是.mdf。

  16. 13-2-2 建立Connection物件-步驟二:開啟資料庫連接 • 在建立好Connection物件後,就可以使用Open()方法開啟資料庫連接,如下所示; objCon.Open(); • 上述程式碼使用名為objCon的Connection物件來開啟資料庫連接。

  17. 13-2-2 建立Connection物件-步驟三:資料庫操作與查詢 • 在建立好Connection資料庫連接物件後,就可以使用State屬性檢查目前資料庫的連接狀態,如下所示: if (objCon.State == ConnectionState.Open) { Response.Write("<b>目前為開啟狀態</b><br/>"); } else { Response.Write("<b>目前為關閉狀態</b><br/>"); }

  18. 13-2-2 建立Connection物件-步驟四:關閉資料庫連接 • 在完成資料庫操作後,請使用Connection物件的Close()方法關閉資料庫連接。以Connection物件objCon為例,如下所示: objCon.Close();

  19. 13-3 ADO.NET的DataReader物件 • 13-3-1 Command與DataReader物件 • 13-3-2 開啟DataReader物件 • 13-3-3 取得記錄的欄位名稱與值 • 13-3-4 使用表格顯示資料表

  20. 13-3 ADO.NET的DataReader物件 • ASP.NET網頁資料庫就是使用ADO.NET的DataReader或DataSet物件來取得記錄資料,本節將說明如何用Command物件執行SQL指令來取得DataReader物件的資料表記錄。

  21. 13-3-1 Command與DataReader物件-Command物件 • Command物件可以針對資料來源執行SQL指令,我們可以使用Command物件送出SQL指令來新增、刪除、更新和查詢資料表的記錄。 • ASP.NET程式需要先使用Connection物件建立和開啟資料庫連接後,才能使用Command物件執行SQL指令。 • Command物件分為兩種 • OLE DB使用OleDbCommand物件 • SQL Server使用SqlCommand物件。

  22. 13-3-1 Command與DataReader物件-DataReader物件 • DataReader物件是執行SQL指令傳回的記錄資料,這是「唯讀」(Read-Only)和「只能向前」(Forward-Only)的串流資料。因其每次只會從資料來源讀取一列資料(即一筆)儲存到記憶體,所以讀取資料的執行效率非常高。 • DataReader物件也分為兩種 • OLE DB使用OleDbDataReader物件 • SQL Server使用SqlDataReader物件

  23. 13-3-2 開啟DataReader物件-步驟一:開啟Connection物件的資料庫連接 • ASP.NET程式建立DataReader物件需要使用Connection物件開啟資料庫連接: OleDbConnection objCon = new OleDbConnection(strDbCon); objCon.Open(); • 上述程式碼建立objCon的Connection物件後,使用Open()方法開啟資料庫連接。

  24. 13-3-2 開啟DataReader物件-步驟二:建立Command物件 • 在建立好Connection物件後,就可以使用SQL指令和Connection物件作為參數來建立Command物件,如下所示: string strSQL = "SELECT * FROM iPod"; OleDbCommand objCmd = new OleDbCommand(strSQL, objCon); • 上述程式碼使用new運算子建立Command物件,第2個參數是開啟的Connection物件,表示向此資料來源執行第1個參數的SQL指令。

  25. 13-3-2 開啟DataReader物件-步驟三:執行SQL指令查詢資料表 • 接著使用Command物件的ExecuteReader()方法執行SQL查詢指令,如下所示: OleDbDataReader objDataReader = objCmd.ExecuteReader(); • 上述程式碼取得DataReader物件objDataReader,讀者可以想像它是開啟一個資料庫的檔案串流。

  26. 13-3-2 開啟DataReader物件-步驟四:檢查狀態或讀取記錄資料 • DataReader物件是一種資料串流,可以使用IsClosed屬性檢查DataReader串流是否已經開啟,如下所示: if (objDataReader.IsClosed == false) { Response.Write("<b>DataReader物件為開啟狀態</b><br/>"); } else { Response.Write("<b>DataReader物件為關閉狀態</b><br/>"); }

  27. 13-3-2 開啟DataReader物件-步驟五:關閉DataReader和資料庫連接 • 最後可以關閉DataReader串流物件和資料庫連接,如下所示: objDataReader.Close(); objCon.Close(); • 上述程式碼使用Close()方法關閉DataReader和Connection物件。

  28. 13-3-3 取得記錄的欄位名稱與值-說明 • 當ASP.NET程式使用Command物件的ExecuteReader()方法取得DataReader物件後,我們可以將DataReader物件視為一種類似檔案的記錄串流,在檔案中的每一列是一筆記錄,一次讀取一筆記錄,如下圖所示:

  29. 13-3-3 取得記錄的欄位名稱與值-讀取記錄 • 在開啟DataReader物件後,記錄指標是指向第1筆記錄之前,程式可以使用Read()方法讀取下一筆記錄,如下所示: objDataReader.Read(); • 上述程式碼執行Read()方法,換句話說,目前記錄指標就會移到下一筆,指向第1筆記錄,即MA146LL。

  30. 13-3-3 取得記錄的欄位名稱與值-相關方法 • 現在我們可以使用欄位定義資料的原始順序來取得欄位值、檢查欄位值是否存在或欄位的資料類型。其相關方法如下表所示:

  31. 13-3-4 使用表格顯示資料表-說明 • ASP.NET程式可以使用表格,一列代表一筆記錄,每一欄為一個欄位來顯示資料表的記錄資料,程式是使用HTML/XHTML表格標籤來顯示資料表。 • 亦可直接使用DataGrid控制項,以資料繫結方式來顯示資料表的記錄資料。

  32. 13-3-4 使用表格顯示資料表-讀取 • DataReader物件如同串流物件,ASP.NET程式可以使用while迴圈來讀取資料表的記錄,如下所示: while (objDR.Read()) { Response.Write("<tr>"); Response.Write("<td>"+ objDR["ModelNo"] +"</td>"); Response.Write("<td>"+ objDR["Name"] + "</td>"); Response.Write("<td>"+ objDR["Storage"] +"</td>"); Response.Write("<td>"+ objDR["Price"] + "</td>"); Response.Write("<td>"+ objDR["StockDate"] + "</td>"); Response.Write("</tr>"); }

  33. 13-3-4 使用表格顯示資料表-取得欄位 • DataReader物件是一個集合物件,可以使用欄位名稱或欄位順序來取得欄位值,如下所示: Response.Write("<td>"+ objDR["Name"] + "</td>"); Response.Write("<td>" + objDR[1] + "</td>"); • 程式碼的字串Name是欄位名稱,數值1是欄位Name的原始順序,取得資料的型態是資料庫欄位的資料類型,以此例為string字串,如果是Price欄位就是decimal資料型態。

  34. 完整範例 string strSQL = "SELECT * FROM iPod"; // 建立Command物件的SQL指令 OleDbCommand objCmd = new OleDbCommand(strSQL, objCon); // 取得DataReader物件 OleDbDataReader objDR = objCmd.ExecuteReader(); // 顯示資料表的記錄 while (objDR.Read()) { Response.Write("<tr>"); Response.Write("<td>"+ objDR["ModelNo"] +"</td>"); Response.Write("<td>"+ objDR["Name"] + "</td>"); Response.Write("<td>"+ objDR["Storage"] +"</td>"); Response.Write("<td>"+ objDR["Price"] + "</td>"); Response.Write("<td>"+ objDR["StockDate"] + "</td>"); Response.Write("</tr>"); } objDR.Close(); // 關閉DataReader objCon.Close(); // 關閉資料庫連接 %> </table> </body> </html> <!-- 程式範例:Ch13-3-4.aspx --> <%@ Page Language="C#" %> <%@ Import Namespace="System.Data" %> <%@ Import NameSpace="System.Data.OleDb" %> <html> <head><title>使用表格顯示資料表</title></head> <body> <table border="1"> <tr><th>型號</th><th>名稱</th><th>容量</th> <th>價格</th><th>進貨日期</th></tr> <% // OLEDB提供者字串 string strDbCon = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("iPods.mdb"); // 建立Connection物件 OleDbConnection objCon = new OleDbConnection(strDbCon); objCon.Open(); // 開啟資料庫連接

  35. 13-6 ASP.NET控制項與資料繫結 • 13-6-1 ASP.NET資料繫結的基礎 • 補充: GridView控制項的資料繫結

  36. 13-6-1 ASP.NET資料繫結的基礎-說明 • ASP.NET的Web控制項支援資料繫結技術,可以將不同資料來源的集合物件、陣列、DataReader或DataView物件整合到ASP.NET的Web控制項。 • 不過,並非每一個Web控制項都支援資料繫結技術,只有擁有DataSource屬性的Web控制項才支援資料繫結。

  37. 13-6-1 ASP.NET資料繫結的基礎-步驟 • 在ASP.NET程式的Web控制項使用資料繫結的步驟,如下所示: • Step 1:定義資料來源和取得資料來源的資料物件。 • Step 2:指定控制項的DataSource屬性為此資料來源的資料物件,以資料庫來說就是DataReader等物件。 • Step 3:執行控制項的DataBind()方法建立資料連結。

  38. 補充: GridView控制項的資料繫結 GridView1.DataSource = objCmd.ExecuteReader(); GridView1.DataBind();

More Related