程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#應用SqlDataAdapter對象獲得數據的辦法

C#應用SqlDataAdapter對象獲得數據的辦法

編輯:C#入門知識

C#應用SqlDataAdapter對象獲得數據的辦法。本站提示廣大學習愛好者:(C#應用SqlDataAdapter對象獲得數據的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#應用SqlDataAdapter對象獲得數據的辦法正文


本文實例講述了C#應用SqlDataAdapter對象獲得數據的辦法。分享給年夜家供年夜家參考,詳細以下:

一.SqlDataAdapter對象

1. SqlDataAdapter特征

SqlDataAdapter類用作ADO.NET對象模子中和數據銜接部門和未銜接部門之間的橋梁。SqlDataAdapter從數據庫中獲得數據,並將其存儲在DataSet中。SqlDataAdapter也能夠獲得DataSet中的更新,並將它們提交給數據庫。

SqlDataAdapter是為處置脫機數據而設計的,挪用其Fill辦法填充DataSet時乃至不須要與數據庫的運動銜接。即假如挪用Fill辦法時,SqlDataAdapter與數據庫的銜接不是翻開時,SqlDataAdapter將翻開數據庫銜接,查詢數據庫,提取查詢成果,將查詢成果填入DataSet,然後封閉也數據庫的銜接。

2. SqlDataAdapter的設置

SqlCommand屬性

SqlDataAdapter將查詢成果存儲到DataSet中時,SqlDataAdapter應用SqlCommand和SqlConnection與數據庫停止通訊。SqlDataAdapter在外部應用SqlDataReader獲得成果,並將信息存儲到DataSet的新行。SqlCommand類的屬性包含SelectCommand、InsertCommand、UpdateCommand、DeleteCommand分離對應數據庫的查詢、拔出、更新和刪除操作。

TabbleMappings聚集

默許情形下,SqlDataAdapter假定SqlDataReader中的列與DataSet中的列婚配,但現實情形中常常希冀DataSet的架構分歧於數據庫的架構,是以SqlDataAdapter供給了一種將查詢成果映照到DataSet成果的機制:TableMappings聚集。

SqlDataAdapter的TableMappings屬性前往一個DataTableMappingsConnention對象,它包括DataTableMapping對象的聚集。每一個對象許可在數據庫中的一個表(或視圖或存儲進程)與DataSet中絕對應的DataTable的稱號之間樹立一種映照;TableMappings對象具有ColumnMappings屬性,它前往DataColumnMappings對象構成的聚集,每一個DataColumnMappings對象對應數據庫查詢成果中的一列映照到DataSet中DataTable中的一列。示例代碼以下:

Using System.Data.Common;
SqlDataAdapter da=new SqlDataAdapter();
//初始化DataAdapter
DataTableMapping tableMap;
tableMap=da.TableMappings.Add("Table","Employees");
tableMap.ColumnMappings.Add("EmpID","EmployeeID");
tableMap.ColumnMappings.Add("LName","LastName");

二.SqlDataAdapter的創立與應用

1. 創立SqlDataAdapter

New 症結字

New 症結字樹立新的SqlDataAdapter對象後,再設置其SqlCommand屬性

SqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand=cmd;

SqlDataAdapter的結構函數

strSql是查詢數符串;strConn是數據庫銜接字符串;cmd是SqlCommand對象;cn是SqlConnection對象。

SqlDataAdapter da=new SqlDataAdapter(strSql,strConn);
SqlDataAdapter da=new SqlDataAdapter(strSql,cn);
SqlDataAdapter da=new SqlDataAdapter(cmd);

2. 獲得查詢中的成果

應用Fill辦法

挪用SqlDataAdapter類的Fill辦法會履行存儲在SqlDataAdapter對象的SqlCommand屬性中的查詢,並將查詢成果存儲在DataSet中。示例代碼以下:

SqlDataAdapter da=new SqlDataAdapter(strSql,strConn);
DataSet ds =new DataSet();
da.Fill(ds);

履行以上代碼後,DataSet的實例對象ds中會創立一個新的DataTable,這個DataTable具有strSql查詢語句中所包含的字段,但DataTable對象的稱號為默許的Table,而不是查詢語句中所查詢的表的稱號。

應用重載的Fill辦法

指定DataTable

da.Fill(DataSet,"MyTableName")
// SqlDataAdapter填充指定DataSet的特定表。

da.Fill(DataTable);
// SqlDataAdapter填充曾經創立的DataTable對象。

Fill辦法分頁顯示

da.Fill(DataSet,intStartRecord,intNumRecord,"TableName");
//Fill辦法能夠很輕松的完成分頁顯示,但操作效力很低。

挪用SqlDataAdapter對象Fill辦法進程的數據庫銜接的翻開與封閉

SqlDataAdapter的Fill辦法挪用前不須要有運動的SqlConnection對象,SqlDataAdapter會本身翻開strConn語句中的數據庫,獲得查詢成果後,封閉與數據庫的銜接。假如曾經存在SqlConnection對象,不管能否曾經翻開,SqlDataAdapter履行完Fill辦法後,均會將SqlConnection對象前往到原始狀況。

當法式中的多個SqlDataAdapter對象應用都一個SqlConnection對象時,為防止屢次翻開與封閉SqlConnection對象,應當在挪用SqlDataAdapter的Fill辦法前挪用SqlConnection的Open辦法翻開數據庫的銜接,待完成Fill挪用後再挪用SqlConnection的Close辦法封閉數據庫的銜接。

DataSet中數據的更新

假如DataSet中的數據須要更新,在挪用Fill辦法之前應當先消除DataSet或DataTable中的數據,如許可以確保DataTable中不會湧現反復的數據行,也不會湧現數據庫中曾經不存在的數據行。

3. 將查詢成果映照到DataSet

TableMappings映照

TabbleMappings聚集掌握SqlDataAdapter若何將DataSet映照到數據庫。假如堅持TabbleMappings聚集為空,挪用Fill辦法,然後將DataSet作為參數,而不指定表名,SqlDataAdapter將假定您願望應用一個名為"Table"的DataTable來裝載數據。

SqlDataAdapter.TableMappings.Add("Table","Employees")

此語句的感化是將DataSet華夏來名字為"Table"的DataTable定名為"Employees",DataSet填湊數據時,按查詢成果集的次序順次填充DataSet中的Table、Table1、Table2……,所以給DataTable定名時需留心該DataTable能否為以後將要應用的對象。

TableMappings和ColumnMappings的AddRange辦法

結構並賦值DataTableMapping、DataColumnMapping數組,再挪用它們的AddRange辦法將該聚集全體添加到映照數組。

DataTableMapping tableMap;
tableMap=da.TableMapping.Add("Table","Employees");
DataColumnMapping[] columnMaps;
columnMaps=new DataColumnMapping[];
{new DataColumnMapping ("EmpID","EmployeeID"),
new DataColumnMapping ("LName","LastName")
}
tableMap.ColumnMapping.AddRange(columnMaps);

MissingMappingAction屬性

當SqlDataAdapter提取查詢成果來填充DataSet時,它將檢討TableMappings聚集,假如存在成果集中列不在TableMappings聚集時,它將檢查MissingMappingAction屬性的值來決議若何操作。

Passthrough 映照中沒有湧現的列依然填充到DataSet,采取原成果集的稱號;

Ignore  疏忽映照中沒有湧現的列;

Error 在湧現不婚配的情形下激發異常;

願望本文所述對年夜家C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved