詳解設計形式中的Command敕令形式及相干C++完成。本站提示廣大學習愛好者:(詳解設計形式中的Command敕令形式及相干C++完成)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解設計形式中的Command敕令形式及相干C++完成正文
本文實例講述了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#法式設計有所贊助。