1 / 45

第 8 章 ADO.NET的網頁資料庫操作

第 8 章 ADO.NET的網頁資料庫操作. 8-1 網頁資料庫的基礎 8-2 建立資料庫與新增 ODBC 8-3 ADO.NET 的基礎 8-4 SQL 指令的資料庫操作 8-5 DataSet 的資料庫操作 8-6 使用參數 SQL 指令的資料庫操作. 8-1 網頁資料庫的基礎. 8-1-1 資料庫系統 8-1-2 建立網頁資料庫. 8-1-1 資料庫系統. 在電腦計算機科學的應用領域,「資料庫」( Database )才是公司行號或家庭電腦化的推手,眾多的出勤管理系統、倉庫管理系統、進銷存系統或小至錄影帶店管理系統,都屬於不同應用的資料庫系統。

Télécharger la présentation

第 8 章 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. 第8章 ADO.NET的網頁資料庫操作 • 8-1 網頁資料庫的基礎 • 8-2 建立資料庫與新增ODBC • 8-3 ADO.NET的基礎 • 8-4 SQL指令的資料庫操作 • 8-5 DataSet的資料庫操作 • 8-6 使用參數SQL指令的資料庫操作

  2. 8-1 網頁資料庫的基礎 • 8-1-1 資料庫系統 • 8-1-2 建立網頁資料庫

  3. 8-1-1 資料庫系統 • 在電腦計算機科學的應用領域,「資料庫」(Database)才是公司行號或家庭電腦化的推手,眾多的出勤管理系統、倉庫管理系統、進銷存系統或小至錄影帶店管理系統,都屬於不同應用的資料庫系統。 • 資料庫系統本身是一套應用程式,例如:Access、MySQL、SQL Server和Oracle等,資料庫使用者可以使用SQL資料庫語言來儲存和管理所需的資料,事實上,只有複雜的應用系統,程式開發者才需替客戶量身定作所需的資料庫系統。

  4. 8-1-2 建立網頁資料庫-說明 • 網頁資料庫是使用資料庫作為網頁內容的資料來源,它是結合Web伺服器和資料庫系統的一種應用程式架構,如下圖所示:

  5. 8-1-2 建立網頁資料庫-步驟 • ASP.NET技術建立網頁資料庫的步驟,如下所示: • Step 1:建立網頁內容所需的資料庫,即Access資料庫檔案.mdb,或SQL Server資料庫。 • Step 2:新增伺服器的ODBC資料來源或使用OLEDB或SQL Server的「提供者」(Managed Providers)來連結資料庫。 • Step 3:撰寫ASP.NET程式,使用ADO.NET存取資料庫記錄來產生網頁內容。 • Step 4:啟動瀏覽程式執行與測試ASP.NET程式執行結果。

  6. 8-2 建立資料庫與新增ODBC • 8-2-1 建立資料庫 • 8-2-2 新增ODBC系統資料來源

  7. 8-2-1 建立資料庫-建立Access資料庫 • Access資料庫Users.mdb擁有Users資料表,欄位說明如下表所示:

  8. 8-2-1 建立資料庫-建立SQL Server 2005 Express資料庫 • 在安裝Visual Web Developer同時也安裝SQL Server 2005 Express,在VWD提供相關介面,可以幫助我們建立SQL Server資料庫。

  9. 8-2-2 新增ODBC系統資料來源 • ASP.NET程式如果使用ODBC建立資料庫連結,在Web伺服器電腦需要新增「ODBC」(Open DataBase Connectivity)系統資料來源「DSN」(Data Source Name),如下圖:

  10. 8-3 ADO.NET的基礎 • 8-3-1 什麼是ADO.NET • 8-3-2 ADO.NET物件模型

  11. 8-3-1 什麼是ADO.NET-說明 • ADO.NET是微軟新一代技術,它是「ADO」(ActiveX Data Object)元件的後繼者,目前版本是2.0版。其主要目的是在.NET Framework平台存取資料,簡單的說,ASP.NET是使用ADO.NET來進行資料庫存取。 • ADO.NET的目的是提供一致的物件模型,可以存取和編輯資料來源的資料,換句話說,就是提供一致的資料處理方式,至於資料來源並不限資料庫,幾乎任何資料來源都可以。以ASP.NET的應用來說,ADO.NET的主要功能是存取資料庫,所以ASP.NET使用ADO.NET,一般來說都是為了建立網頁資料庫。

  12. 8-3-1 什麼是ADO.NET-名稱空間 • 在ASP.NET程式需要匯入名稱空間來使用ADO.NET類別。主要名稱空間有3個,如下表所示:

  13. 8-3-2 ADO.NET物件模型-圖例 • ADO.NET主要類別物件有:Connection、Command、DataReader和DataSet,其物件模型如下圖所示:

  14. 8-3-2 ADO.NET物件模型-Connection物件 • Connection物件可以建立與資料來源間的連結,以資料庫來說,Connection物件還負責初始資料庫。Connection物件有兩種:OLE DB是使用OleDbConnection物件,SQL Server是使用SqlConnection物件。 • 換個角度來說,Web伺服器和資料庫系統間本來沒有任何關係,屬於兩套不同的應用程式,透過ODBC或OLE DB可以開啟資料來源的資料庫,Connection物件進一步將ASP.NET程式和資料庫連結起來。

  15. 8-3-2 ADO.NET物件模型-Command物件 • Command物件可以對資料來源執行指令,以資料庫來說,就是執行SQL指令。ASP.NET程式可以使用Command物件送出SQL指令來新增、刪除、更新和查詢資料表的記錄。 • 在ASP.NET程式需要先使用Connection物件建立資料庫連結後,才能使用Command物件執行SQL指令,Command物件分為兩種:OLE DB是使用OleDbCommand物件,SQL Server是使用SqlCommand物件。

  16. 8-3-2 ADO.NET物件模型-DataReader物件 • ADO.NET的DataReader物件可以從資料來源使用Command物件執行指令,取得「唯讀」(Read-Only)和「只能向前」(Forward-Only)的串流資料,每次只能從資料來源讀取一列資料(即一筆)儲存到記憶體,所以執行效率非常高。 • DataReader物件分為兩種:OLE DB是使用OleDbDataReader物件,SQL Server是使用SqlDataReader物件。

  17. 8-3-2 ADO.NET物件模型-DataSet和DataTable物件 • DataSet物件是由DataTable物件組成的集合物件,DataSet物件可代表儲存在記憶體的資料庫,每一個DataTable儲存一個資料表的記錄資料,並且可以設定資料表間的關聯性(Relationship)。 • DataSet和DataTable類別屬於System.Data名稱空間,當ASP.NET程式需要將資料表的記錄資料填入DataTable物件時,我們需要使用DataAdapter類別的方法Fill()將資料表的資料填入DataSet物件。

  18. 8-4 SQL指令的資料庫操作 • 8-4-1 SQL指令的資料庫操作 • 8-4-2 插入新記錄 • 8-4-3 更新記錄 • 8-4-4 刪除記錄

  19. 8-4-1 SQL指令的資料庫操作-匯入名稱空間 • 在ASP.NET程式可以使用ADO.NET的Command物件來執行SQL指令,程式是使用Connection物件來建立資料庫連結。ASP.NET程式首先匯入所需的名稱空間,如下所示: <%@ Import Namespace="System.Data" %> <%@ Import NameSpace="System.Data.OleDb" %> • 上述名稱空間是使用在非SQL Server的資料庫系統(7.0以上的版本),例如:Access或Oracle。SQL Server建議匯入的名稱空間,如下所示: <%@ Import Namespace="System.Data" %> <%@ Import NameSpace="System.Data.SqlClient" %>

  20. 8-4-1 SQL指令的資料庫操作-步驟一:建立和開啟資料庫連結 • ASP.NET程式在匯入名稱空間後,就可以建立Connection物件,如下所示: objCon = New OleDbConnection(strDbCon) • 上述程式碼建立名為objCon的OleDbConnection物件。strDbCon變數是資料來源字串,如下所示: strDbCon="Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & _ Server.Mappath("/Ch08/Users.mdb")

  21. 8-4-1 SQL指令的資料庫操作-步驟二:建立Command物件 • 在開啟資料庫連結後,就可以建立Command物件來指定欲執行的SQL指令字串,如下所示: objCmd = New OleDbCommand( _ strSQL, objCon)

  22. 8-4-1 SQL指令的資料庫操作-步驟三:執行SQL指令處理資料庫 • 現在ASP.NET程式已經開啟資料庫連結和建立Command物件,接著就可以使用Command物件的ExecuteNonQuery()方法來執行SQL指令,如下所示: count = objCmd.ExecuteNonQuery() • 程式碼的變數count可以取得影響的記錄數,此方法執行SQL指令並不會傳回記錄資料。

  23. 8-4-1 SQL指令的資料庫操作-步驟四:關閉資料庫連結 • 在完成資料庫操作後,請記得使用Connection物件的Close()方法關閉資料庫連結。以Connection物件objCon為例,如下所示: objCon.Close()

  24. 8-4-2 插入新記錄-SQL指令 • 在ASP.NET程式插入記錄,最重要的部分是建立Command物件執行的SQL指令,插入新記錄的SQL指令字串,如下所示: strSQL="INSERT INTO USERS (name,birthday," & _ "salary,email,username,userpassword) " strSQL = strSQL & "VALUES ('" & name.Text & "'," strSQL = strSQL & "#" & birthday.Text & "#," strSQL = strSQL & salary.Text & ",'" strSQL = strSQL & email.Text & "','" strSQL = strSQL & username.Text & "','" strSQL = strSQL & password.Text & "')"

  25. 8-4-2 插入新記錄-注意事項 • 不論欄位或值清單,都是使用逗號「,」分隔。 • 在VALUES的欄位值中,數值不用單引號括起,字元和日期/時間是使用單引號括起,如果是Access資料庫,日期/時間是使用「#」符號括起。 • 欄位清單並不需要和資料表定義的欄位數目或順序相同,只需列出欲插入欄位即可,不過,非NULL值欄位一定要列出,而且括號內的欄位順序必須和VALUES值的順序相同。

  26. 8-4-3 更新記錄-SQL指令 • 在ASP.NET程式的SQL指令是以使用者帳號作為更新記錄的條件,更新欄位是UserPassword和Email,SQL指令字串,如下所示: strSQL = "UPDATE USERS SET " strSQL &="UserPassword='" & _ password.Text & "' , " strSQL &="Email='" & email.Text & "'" strSQL &=" WHERE UserName='" & _ username.Text & "'"

  27. 8-4-3 更新記錄-注意事項 • WHERE子句是必要元素,如果沒有條件,資料表內所有記錄欄位都會更新。 • 對於更新欄位值,數值不用單引號括起,字元和日期/時間是使用單引號括起,如果是Access資料庫,日期/時間是使用「#」符號括起。

  28. 8-4-4 刪除記錄-SQL指令 • 在ASP.NET程式建立SQL指令字串,就可以使用Command物件執行DELETE指令來刪除記錄資料,如下所示: strSQL = _ "DELETE FROM USERS WHERE UserName ='" & _ username.Text & "'"

  29. 8-4-4 刪除記錄-注意事項 • WHERE子句是必要元素,如果沒有此條件,資料表內的所有記錄都會刪除掉。 • WHERE條件的比較運算子和Visual Basic 2005語法相類似,能夠使用=、<>、>、<=和>=。 • WHERE條件如果不只一個,需要使用邏輯運算子來連結,如下表所示:

  30. 8-5 DataSet的資料庫操作 • 8-5-1 DataSet物件的資料庫操作 • 8-5-2 插入新記錄 • 8-5-3 更新記錄 • 8-5-4 刪除記錄

  31. 8-5-1 DataSet物件的資料庫操作-步驟一:建立Connection物件 • ASP.NET程式需要使用Connection物件來建立資料庫連結,如下所示: objCon = New OleDbConnection(strDbCon) • 上述程式碼建立objCon的資料庫連結物件。

  32. 8-5-1 DataSet物件的資料庫操作-步驟二:建立DataAdapter和CommandBuilder物件 • 在DataSet物件是使用DataAdapter物件來取得記錄資料,它是DataSet和Connection物件資料來源間的橋樑,可以取得DataSet的記錄資料和更新資料來源的記錄資料。 • DataAdapter類別也擁有2個版本,SQL Server是SqlDataAdapter,以本節為例是使用OLE DB的OleDbDataAdapter,如下所示: strSQL = "SELECT * FROM Users" objDataAdapter= _ New OleDbDataAdapter(strSQL,objCon)

  33. 8-5-1 DataSet物件的資料庫操作-步驟二:建立DataAdapter和CommandBuilder物件 • DataAdapter物件提供4個屬性SelectCommand、InsertCommand、DeleteCommand和UpdateCommand,可以分別指定查詢、插入、刪除和更新SQL指令的Command物件,不過,我們並不用自行建立,可以使用CommandBuilder物件來自動幫我們建立SQL指令,如下所示: Dim objCmdBuilder As OleDbCommandBuilder = _ New OleDbCommandBuilder(objDataAdapter)

  34. 8-5-1 DataSet物件的資料庫操作-步驟三:建立DataSet物件填入記錄資料 • 現在我們可以建立DataSet物件且執行DataAdapter的SQL查詢指令,將記錄資料填入DataSet,如下所示: objDataSet As DataSet = New DataSet() objDataAdapter.Fill(objDataSet, "Users") • 上述程式碼建立DataSet物件後,使用DataAdpater物件的Fill()方法將SQL指令的查詢結果,填入第1個參數的的DataSet物件。

  35. 8-5-1 DataSet物件的資料庫操作-步驟四:在DataTable執行資料庫操作 • DataSet物件的每一個DataTable物件是對應資料庫的一個資料表,當建立好DataSet物件填入記錄資料後,就可以在DataTable物件插入、刪除和更新列物件DataRow,這就是一筆記錄。

  36. 8-5-1 DataSet物件的資料庫操作-步驟五:更新資料表的記錄資料 • 在DataTable物件新增、更新或刪除DataRow物件後,因為操作是針對儲存在記憶體的DataSet物件,最後我們還需要更新資料來源的記錄資料,如下所示: count = objDataAdapter.Update( _ objDataSet, "Users")

  37. 8-5-1 DataSet物件的資料庫操作-步驟六:關閉資料庫連結 • 最後記得需要關閉資料庫連結,即使用Connection物件的Close()方法,如下所示: objCon.Close()

  38. 8-5-2 插入新記錄-建立DataRow物件 • DataSet物件插入新記錄操作是針對DataTable物件,所謂插入記錄就是新增DataRow物件,如下所示: Dim objDataRow As DataRow objDataRow = _ objDataSet.Tables("Users").NewRow() • 接著輸入欄位值,如下所示: objDataRow("name") = name.Text objDataRow("birthday") = birthday.Text ………………… objDataRow("userpassword") = _ password.Text

  39. 8-5-2 插入新記錄-新增至DataTable物件 • 最後將DataRow物件新增到DataTable物件,如下所示: objDataSet.Tables("Users").Rows.Add(objDataRow)

  40. 8-5-3 更新記錄 • DataSet物件的更新記錄操作,因為擁有更新條件,所以需要使用迴路找尋欲更新記錄後,才能更新記錄資料,如下所示: For Each objDataRow in _ objDataSet.Tables("Users").Rows If objDataRow("UserName") = _ username.Text Then objDataRow("UserPassword") = password.Text objDataRow("Email") = email.Text End If Next

  41. 8-5-4 刪除記錄 • 同樣方式,我們可以使用DataSet物件來刪除資料表的記錄,如下所示: For Each objDataRow in _ objDataSet.Tables("Users").Rows If objDataRow("UserName") = _ username.Text Then objDataRow.Delete() End If Next

  42. 8-6 使用參數SQL指令的資料庫操作-參數的SQL指令字串 • Command物件如果需要新增Parameter物件的參數,在SQL指令字串也需要新增參數,這是以「@」符號開頭的字串名稱,如下所示: strSQL="INSERT INTO USERS (name,birthday," & _ "salary,email,username,userpassword) " strSQL &="VALUES ( @name, @birthday,@salary, " strSQL &="@email, @username, @password)" • 上述SQL指令字串的@name、@birthday、@salary、@email、@username和@password就是參數。

  43. 8-6 使用參數SQL指令的資料庫操作-建立Parameter參數物件 • 接著我們可以使用參數的SQL指令字串來建立Command物件,如下所示: objCmd = _ New OleDbCommand(strSQL, objCon) • 上述程式碼建立Command物件,objCon是Connection物件。

  44. 8-6 使用參數SQL指令的資料庫操作-建立Parameter參數物件 • 然後使用Parameters屬性取得ParameterCollection集合物件,使用Add()方法新增參數的Parameter物件,如下所示: objCmd.Parameters.Add(New OleDbParameter( _ "@name", OleDbType.Varchar, 10)) objCmd.Parameters.Add(New OleDbParameter( _ "@birthday", OleDbType.Date)) ……… objCmd.Parameters.Add(New OleDbParameter( _ "@username", OleDbType.Varchar, 10)) objCmd.Parameters.Add(New OleDbParameter( _ "@password", OleDbType.Varchar, 10))

  45. 8-6 使用參數SQL指令的資料庫操作-指定參數SQL指令的參數值 • 當Command物件新增ParameterCollection集合物件的參數物件後,在使用Execute()方法執行SQL指令前,就可以指定參數值,如下所示: objCmd.Parameters("@name").Value=name.Text objCmd.Parameters("@birthday").Value= _ birthday.Text objCmd.Parameters("@salary").Value=salary.Text objCmd.Parameters("@email").Value=email.Text objCmd.Parameters("@username").Value= _ username.Text objCmd.Parameters("@password").Value= _ password.Text

More Related