13 2 2 Connection ASP NET ADO NET

  • Slides: 38
Download presentation

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

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

13 -2 -2 建立Connection物件步驟一:建立Connection物件 1 • 在ASP. NET程式建立Connection物件,就是宣告和 建立Ole. Db. Connection物件變數obj. Con,如下所示: Ole. Db.

13 -2 -2 建立Connection物件步驟一:建立Connection物件 1 • 在ASP. NET程式建立Connection物件,就是宣告和 建立Ole. Db. Connection物件變數obj. Con,如下所示: Ole. Db. Connection obj. Con = new Ole. Db. Connection(str. Db. Con); • 程式碼使用new運算子建立名為obj. Con的 Ole. Db. Connection物件,str. Db. Con變數是資料來源 字串,如下所示: string str. Db. Con="Provider=Microsoft. Jet. OLEDB. 4. 0; “ + "Data Source=" + Server. Map. Path("i. Pods. mdb");

13 -2 -2 建立Connection物件步驟一:建立Connection物件 2 • 連接SQL Server與SQL Server Express資料庫的 Sql. Connection物件,如下所示: str. Db.

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

13 -2 -2 建立Connection物件步驟一:建立Connection物件 3 • 至於SQL Server 2005 Express的連接字串,如下所 示: str. Db. Con="Data

13 -2 -2 建立Connection物件步驟一:建立Connection物件 3 • 至於SQL Server 2005 Express的連接字串,如下所 示: str. Db. Con="Data Source=. SQLEXPRESS; Attach. Db. Filename=" + Server. Map. Path("i. Pods. mdf") + "; Integrated Security=True; " + "Trust. Server. Certificate=False; " + "User Instance=True; Context Connection=False"; • 上述連接字串的Data Source屬性是. SQLEXPRESS, Attach. Db. Filename屬性是資料庫名稱,副檔名是. mdf。

13 -3 ADO. NET的Data. Reader物件 • • 13 -3 -1 Command與Data. Reader物件 13 -3

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

13 -3 -2 開啟Data. Reader物件步驟一:開啟Connection物件的資料庫連接 • ASP. NET程式建立Data. Reader物件需要使用 Connection物件開啟資料庫連接: Ole. Db. Connection obj.

13 -3 -2 開啟Data. Reader物件步驟一:開啟Connection物件的資料庫連接 • ASP. NET程式建立Data. Reader物件需要使用 Connection物件開啟資料庫連接: Ole. Db. Connection obj. Con = new Ole. Db. Connection(str. Db. Con); obj. Con. Open(); • 上述程式碼建立obj. Con的Connection物件後,使用 Open()方法開啟資料庫連接。

13 -3 -2 開啟Data. Reader物件步驟四:檢查狀態或讀取記錄資料 • Data. Reader物件是一種資料串流,可以使用 Is. Closed屬性檢查Data. Reader串流是否已經開啟, 如下所示: if (obj.

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

13 -3 -4 使用表格顯示資料表-讀取 • Data. Reader物件如同串流物件,ASP. NET程式可 以使用while迴圈來讀取資料表的記錄,如下所示: while (obj. DR. Read()) {

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

完整範例 <!-- 程式範例:Ch 13 -3 -4. aspx --> <%@ Page Language="C#" %> <%@ Import

完整範例 <!-- 程式範例:Ch 13 -3 -4. aspx --> <%@ Page Language="C#" %> <%@ Import Namespace="System. Data"" %> <%@ Import Name. Space=" System. Data. Ole. Db"" %> Name. Space="System. Data. Ole. Db <html> <head><title>使用表格顯示資料表</title></head> <body> <table border="1"> <tr>< th> >型號</ th>< ><th th> >名稱</ th>< ><th th> >容量</ th> > tr><th 型號</th 名稱</th 容量</th <th >價格</ th>< ><th th> >進貨日期</ th></ ></tr tr> > <th> 價格</th 進貨日期</th <% // OLEDB提供者字串 string str. Db. Con = "Provider=Microsoft. Jet. OLEDB. 4. 0; " + "Data Source=" + Server. Map. Path("i. Pods. mdb"); // 建立Connection物件 Ole. Db. Connection obj. Con = new Ole. Db. Connection(str. Db. Con); obj. Con. Open(); // 開啟資料庫連接 string str. SQL = "SELECT * FROM i. Pod"; // 建立Command物件的SQL指令 Ole. Db. Command obj. Cmd = new Ole. Db. Command(str. SQL, obj. Con); // 取得Data. Reader物件 Ole. Db. Data. Reader obj. DR = obj. Cmd. Execute. Reader(); // 顯示資料表的記錄 while (obj. DR. Read ()) { (obj. DR. Read()) Response. Write("< ("<tr >"); Response. Write tr>"); Response. Write("<td>"+ obj. DR["Model. No"] +"</td>"); Response. Write("<td>"+ obj. DR["Name"] + "</td>"); Response. Write("<td>"+ obj. DR["Storage"] +"</td>"); Response. Write("<td>"+ obj. DR["Price"] + "</td>"); Response. Write("<td>"+ obj. DR["Stock. Date"] Response. Write obj. DR["Stock. Date"] + "</td>"); Response. Write("</ tr>"); Response. Write("</tr } obj. DR. Close(); // 關閉Data. Reader obj. Con. Close(); // 關閉資料庫連接 %> </table> </body> </html>

補充: Grid. View控制項的資料繫結 Grid. View 1. Data. Source = obj. Cmd. Execute. Reader(); Grid.

補充: Grid. View控制項的資料繫結 Grid. View 1. Data. Source = obj. Cmd. Execute. Reader(); Grid. View 1. Data. Bind();