第五章ADO.NET和數據庫訪問ppt課件_第1頁
第五章ADO.NET和數據庫訪問ppt課件_第2頁
第五章ADO.NET和數據庫訪問ppt課件_第3頁
第五章ADO.NET和數據庫訪問ppt課件_第4頁
第五章ADO.NET和數據庫訪問ppt課件_第5頁
已閱讀5頁,還剩35頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第五章第五章ADO.NET與數據庫與數據庫訪問訪問 5.2 使用ADO.NET進行數據操作 25.2 使用使用ADO.NET進行數據操作進行數據操作 本節主要內容: ADO.NET中的數據庫查詢DataAdapter對象DataSet類DataAdapter與DataSet的使用XML與ADO.NET35.2.1 數據庫查詢數據庫查詢 1創建創建Command對象對象string strConn,strSQL;strConn = server=localhost;database=Northwind;uid=sa;pwd=;strSQL = select CustomerID,CompanyN

2、ame from Customers;SqlConnection myConn = new SqlConnection(strConn);myConn.Open();SqlCommand cmd; 45.2.1 數據庫查詢數據庫查詢 1創建創建Command對象對象 /第一種方式第一種方式cmd = myConn.CreateCommand();cmd.CommandText = strSQL;55.2.1 數據庫查詢數據庫查詢 1創建創建Command對象對象 /第二種方式第二種方式cmd = new SqlCommand();cmd.CommandText = strSQL;cmd.Con

3、nection = myConn;65.2.1 數據庫查詢數據庫查詢 1創建創建Command對象對象 /第三種方式第三種方式Cmd = new SqlCommand(strSQL,myConn); 75.2.1 數據庫查詢數據庫查詢 2執行無返回行的查詢執行無返回行的查詢不返回結果集的查詢通常稱為操作查詢不返回結果集的查詢通常稱為操作查詢action query),操作查詢有兩種主要類型:),操作查詢有兩種主要類型:數據操縱語言數據操縱語言DML,Data manipulation language查詢。如查詢。如update、insert或或delete語句。語句。數據定義語言數據定義語言

4、DDL,Data definition language查詢,會更改數據庫的結構,如查詢,會更改數據庫的結構,如create table、alert view或或drop procedure等語句。等語句。85.2.1 數據庫查詢數據庫查詢 例如: SqlConnection myConn = new SqlConnection();myConn.ConnectionString = server=localhost;database=Northwind;uid=sa;pwd=;myConn.Open();SqlCommand cmd = myConn.CreateCommand();cmd.

5、CommandText = update Customers set CompanyName=NewCompanyName + where CustomerID =ALFKI;cmd.ExecuteNonQuery(); 95.2.1 數據庫查詢數據庫查詢 示例示例5.2.1可以通過可以通過ExecuteNonQuery方法的方法的返回值辨別查詢是否執行成功。返回值辨別查詢是否執行成功。 105.2.1 數據庫查詢數據庫查詢 3用用DataReader對象檢查查詢結果對象檢查查詢結果 獲取結果獲取結果Command對象提供了一個對象提供了一個ExecuteReader方法,方法,該方法能夠返回

6、該方法能夠返回DataReader對象,可通過此對象,可通過此對象檢查查詢結果。對象檢查查詢結果。 115.2.1 數據庫查詢數據庫查詢例如:例如: string strConn,strSQL;strConn = server=localhost;database=Northwind;uid=sa;pwd=;SqlConnection myConn = new SqlConnection(strConn);myConn.Open();strSQL = select CustomerID,CompanyName from Customers;SqlCommand cmd = new SqlCom

7、mand(strSQL,myConn);SqlDataReader dr = cmd.ExecuteReader();while(dr.Read()Console.WriteLine(drCustomerID + - + drCompanyName);dr.Close(); 125.2.1 數據庫查詢數據庫查詢 更快獲取 使用基于序號的查找 例如:SqlDataReader dr = cmd.ExecuteReader();int intCustomerIDOrdinal = dr.GetOrdinal(CustomerID);int intCompanyNameOrdinal = dr.Ge

8、tOrdinal(CompanyName);while(dr.Read()Console.WriteLine(drintCustomerIDOrdinal + - + drintCompanyNameOrdinal);dr.Close(); 135.2.1 數據庫查詢數據庫查詢 使用適當的類型指定Get方法SqlDataReader dr = cmd.ExecuteReader();int intCustomerIDOrdinal = dr.GetOrdinal(CustomerID);int intCompanyNameOrdinal = dr.GetOrdinal(CompanyName)

9、;while(dr.Read()Console.WriteLine(dr.GetString(intCustomerIDOrdinal) + - + dr.GetString(intCompanyNameOrdinal);dr.Close(); 145.2.1 數據庫查詢數據庫查詢 獲取多個結果select CustomerID,CompanyName from Customers;select OrderID,CustomerID,EmployeeID,OrderDate from Orders;select OrderID,ProductID,Quantity from Order Det

10、ails 155.2.1 數據庫查詢數據庫查詢 獲取多個結果SqlCommand cmd = new SqlCommand(strSQL,myConn);SqlDataReader dr = cmd.ExecuteReader();dowhile(dr.Read()Console.WriteLine(dr0 + - + dr1);Console.WriteLine();while(dr.NextResult(); 165.2.1 數據庫查詢數據庫查詢4執行返回單值的查詢 假設想執行一個查詢,并獲取單個數據元素如一行,一列),用DataReader或DataSet來獲取單值可能有些大材小用。Co

11、mmand對象有一種專為該類查詢設計的方法:ExecuteScalar。 175.2.1 數據庫查詢數據庫查詢5執行參數化查詢 strSQL = select OrderID,CustomerID,EmployeeID,OrderDate from + Orders where CustomerID=CustomerID;SqlCommand cmd = new SqlCommand(strSQL,myConn);cmd.Parameters.Add(CustomerID,SqlDbType.Char,8);cmd.Parameters0.Value = ALFKI;SqlDataReader

12、 dr = cmd.ExecuteReader(); 185.2.2 DataAdapter對象對象 DataAdapter類可以看作是ADO.NET結構的電子“插頭”。該適配器在生命周期內的惟一目的就是填充DataSet,以及向數據源傳送DataSet的改變。 195.2.2 DataAdapter對象對象 適配器實際上是4個獨立的Command對象的容器,即SelectCommand、InsertCommand、UpdateCommand和DeleteCommand。 205.2.3 DataSet類類DataSet是提供內存數據存儲的所有功能的類。它維護完全非連接的數據緩存。 215.2

13、.3 DataSet類類1DataTable該表是一個列的有條理的集合,并擁有許多的關聯行。該表是一個列的有條理的集合,并擁有許多的關聯行。 Columns Columns集包含了表內所有列的列表。集包含了表內所有列的列表。 Constraints 約束是應用于表的數據規則。它為一約束是應用于表的數據規則。它為一集合對象。集合對象。 ChildRelations 關系集,用來定義建立該關系集,用來定義建立該DataTable子表的關系。子表的關系。225.2.3 DataSet類類 ParentRelations 該集合包含了用于建立該DataTable的父表的所有關系的列表。 Primary

14、Key PrimaryKey屬性是用于描述包含一個特定的DataTable的主鍵的所有列的DataColumn對象的數組,它允許相當健壯和復雜的數據存儲于DataSet中。 Rows 而Rows集合提供了包含在該表中的實際數據。它包含DataRow對象集。235.2.3 DataSet類類2DataColumnDataColumn是構建是構建DataTable模式的核心,定模式的核心,定義義DataColumn時,要提供數據類型、尺寸,時,要提供數據類型、尺寸,以及用于控制表內數據如何訪問的名稱信息。以及用于控制表內數據如何訪問的名稱信息。常用的屬性常用的屬性: AllowDBNull 為為B

15、oolean標志,指示在父級標志,指示在父級表列中每行的列是否允許為表列中每行的列是否允許為null。 AutoIncrement 另一另一Boolean標志,指示對標志,指示對于新插入到父級表列中的新行,列是否會自動于新插入到父級表列中的新行,列是否會自動增加列值。增加列值。245.2.3 DataSet類類 DataType DataType屬性并不使用枚舉或一些易錯的數據類型編碼系統,實際上它能存儲實際的.NET Framework數據類型。 ReadOnly 為一Boolean標志,指示表中的列值是否可以修改。 Unique 為一Boolean標志,指示表中所有行的列的所有值必須保證是

16、惟一的。 255.2.3 DataSet類類3DataRowDataRow是表內數據行的格式化的、結構化的數是表內數據行的格式化的、結構化的數據容器。據容器。DataRow對象為表內的數據行容納對象為表內的數據行容納了了Create、Retrieve、Update和和Delete功能。功能。265.2.3 DataSet類類 RowStateRowState屬性屬于枚舉類型DataRowState。它告訴程序員以及GetChanges()和HasChanges()方法DataRow的當前狀態。該狀態可由下列枚舉值的之一來表示。Added:行已加入表中,然而AcceptChanges()方法還未

17、調用。Deleted:行已使用DataRow的Delete()方法刪除。Detached:行實際上不是表的一部分;或者剛創建,還沒有成為集合的一部分;或者剛剛從集合中刪除。Modified:行內的數據已修改,然而AcceptChanges()還未調用。Unchanged:自從上次AcceptChanges()調用后,行內數據沒有改變。275.2.3 DataSet類類 ItemItem屬性經常被重載,以允許使用多種不同的方法得到存儲在行中的指定列的數據。可以提供列名,來設置和讀取值。可以提供DataColumn對象,同樣來設置和瀆取該值。另外,可以提供列的順序位置來設置和讀取值。 BeginE

18、dit()該函數使DataRow處于編輯模式,來暫時延緩事件觸發,以允許同時修改不只一行數據。程序員可通過使幾行處于編輯模式來延緩有效驗證,裝載數據,然后進行修改。285.2.3 DataSet類類 CancelEdit()該函數使DataRow脫離編輯模式,并放棄自從調用BeginEdit()方法后對行所做的改變。 Delete()該函數刪除當前行。295.2.3 DataSet類類 EndEdit()該函數使當前行完成編輯模式,存儲自調用BeginEdit()方法后對DataSet所做的改變。 AcceptChanges()該函數隱式調用EndEdit ()方法。若在該函數調用前行的Row

19、State是Added或Modified,RowState就成為Unchanged。如果在函數調用前RowState是Deleted,則RowState被物理上刪除。 305.2.3 DataSet類類4DataRelation設計設計DataRelation類來包含用以描述通過類來包含用以描述通過DataColumn對象的對象的2個個DataTable對象所需的數據。對象所需的數據。DataSet內的內的DataRelation函數,與函數,與SQL Server中表函數間的關中表函數間的關系,有同樣的功能。系,有同樣的功能。創建創建DataRelation后,就創建了兩個表間的父子關系,后

20、,就創建了兩個表間的父子關系,表中用于建立關系的匹配列必須有相同的數據類型。表中用于建立關系的匹配列必須有相同的數據類型。示例示例5.2.2下面的代碼演示了如何創建新的下面的代碼演示了如何創建新的DataRelation,并將其放在關聯的并將其放在關聯的DataSet的的Relations集合中。集合中。 315.2.3 DataSet類類DataColumn Parent,Child;Parent = ds.TablesCustomers.ColumnsCustomerID;Child = ds.TablesOrders.ColumnsCustomerID;DataRelation Cust

21、Orders = new DataRelation(CustomersOrders,Parent,Child);ds.Relations.Add(CustOrders); 325.2.3 DataSet類類DataRow OrdersRow;OrdersRow = ds.TablesCustomers.Rows0.GetChildRows(CustomersOrders);foreach(DataRow order in OrdersRow)Console.WriteLine(orderFreight.ToString() + - + orderShipName.ToString() + -

22、+ orderShipAddress.ToString(); 335.2.3 DataSet類類OrdersRow=ds.TablesCustomers.Rows0.GetChildRows(CustomersOrders,DataRowVersion.Original); 345.2.4 DataAdapter和和DataSet的使用示例的使用示例示例示例5.2.3下面的代碼演示了如何使用下面的代碼演示了如何使用DataSet和從和從SQL Server讀取數據的讀取數據的DataAdapter,并通過適配器和相應的并通過適配器和相應的IDbCommand對象傳對象傳遞改變,如插入、更新和刪

23、除等。遞改變,如插入、更新和刪除等。 (P214) 355.2.5 XML與與ADO.NET DataSet的結構表、列、關系和約束可在XML架構中定義。 可以使用DataSet的ReadXML方法將XML文檔或流讀入DataSet,使用DataSet的WriteXML方法將DataSet以XML格式寫出。 可以創建DataSet內容的XML視圖XMLDataDocument對象),然后用關系方法通過DataSet或XML方法查看和操作數據。這兩種視圖在更改時自動同步。365.2.5 XML與與ADO.NET1GetXml方法方法GetXml方法,可以用它將方法,可以用它將DataSet的內容提取為的內容提取為字符串。字符串。示例示例5.2.4下面的代碼演示了如何使用下面的代碼演示了如何使用GetXml方方法的。注:該代碼訪問的數據庫為法的。注:該代碼訪問的數據庫為Northwind,操作的表為操作的表為Orders表和表和Order Details表。表。 (P218)375.2.5 XML與與ADO.NET2WriteXml和和ReadXml方法方法將將DataSet的內容寫入一個文件或者一個實現了的內容寫入一個文件或者一個實現了Stream、TextWriter或者或者XMLWriter界面的界面的對象。對象。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論