




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1.NET數(shù)據(jù)集&數(shù)據(jù)提供程序第四章2教學(xué)目標(biāo)了解數(shù)據(jù)庫(kù)訪問(wèn)的發(fā)展過(guò)程理解ADO.NET的工作原理掌握ADO.NET操作數(shù)據(jù)庫(kù)的方法3數(shù)據(jù)訪問(wèn)技術(shù)的發(fā)展ODBCNativeLibraryOLEDB(DAO/RDO)ADOADO.NET4OLEDBOLEDB的數(shù)據(jù)訪問(wèn)序列:初始化OLE連接到數(shù)據(jù)源發(fā)出命令處理結(jié)果釋放數(shù)據(jù)源對(duì)象并停止初始化OLE5OLEDBOLEDB的組件模型:DataProviders數(shù)據(jù)提供者DataConsumers數(shù)據(jù)使用者ServiceComponents服務(wù)組件執(zhí)行數(shù)據(jù)提供者一級(jí)數(shù)據(jù)使用者之間數(shù)據(jù)傳遞的工作6ADO.NETADO.NET的核心組件:DataSet.NETFramework數(shù)據(jù)提供程序7ADO.NETADO.NET結(jié)構(gòu)圖8ADO.NETDataSet:設(shè)計(jì)目的獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問(wèn)組成一個(gè)或多個(gè)DataTable對(duì)象的集合數(shù)據(jù)行、數(shù)據(jù)列、主鍵、外鍵、約束和數(shù)據(jù)的關(guān)系信息用途容納由.NETFrameworkDataProvider獲取的數(shù)據(jù)或者XML中加載的數(shù)據(jù)9ADO.NET.NETFramework數(shù)據(jù)提供程序:組件的目的實(shí)現(xiàn)數(shù)據(jù)操作和對(duì)數(shù)據(jù)的快速、只進(jìn)、只讀訪問(wèn)組件的用途ConnectionCommandDataReaderDataAdapter10ADO.NET.NETFramework數(shù)據(jù)提供程序:SQLServer.NETFramework數(shù)據(jù)提供程序OLEDB.NETFramework數(shù)據(jù)提供程序ODBC.NETFramework數(shù)據(jù)提供程序Oracle.NETFramework數(shù)據(jù)提供程序11ADO.NET從數(shù)據(jù)源中獲取數(shù)據(jù),并保存到DataSet。12ADO.NET只有數(shù)據(jù)提供者,不用DataSet13DataSet的結(jié)構(gòu)和使用DataSet結(jié)構(gòu)圖DataSet的結(jié)構(gòu)和使用DataTable由行和列的集合信息構(gòu)成,即DataColumn集合和DataRow集合構(gòu)成寫(xiě)入數(shù)據(jù)Rows的Add方法Add(DataRowrow);Add(Paramobject[]values);DataTabletable=newDataTable(“students”);table.Columns.Add(newDataColumn(“Name”,typeof(string)));table.Columns.Add(newDataColumn(“Age”,typeof(int)));DataTabletable=newDataTable(“students”);table.Columns.Add(newDataColumn(“Name”,typeof(string)));table.Columns.Add(newDataColumn(“Age”,typeof(int)));DataRowrow=table.NewRow();row[“Name“]=“Neo”; row[“Age”]=27;table.Rows.Add(row); table.Rows.Add(newobjects[]{“Neo”,27});DataSet的結(jié)構(gòu)和使用Relations表示兩個(gè)DataTable對(duì)象之間的父/子關(guān)系,關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)源的table之間的約束關(guān)系//定義關(guān)系對(duì)的父值DataColumnparent=DataSet1.Tables[“Customers”].Columns[“CustID”];//定義關(guān)系對(duì)的子值DataColumnchild=DataSet1.Tables[“Orders”].Columns[“CustID”];//定義關(guān)系DataRelationrelCustOrder=newDataRelation(“CustomersOrders”,parent,child);//將關(guān)系添加入到DataSet中DataSet1.Relations.Add(relCustOrder);DataSet的結(jié)構(gòu)和使用ExtendProperties代表一些用戶自定義的描述信息例如:存入數(shù)據(jù)的過(guò)期時(shí)間DataSet1.ExtendProperties.Add(“ExpiredTime”,DateTime.Now.Add(newTimeSpan(0,1,0,0)));17SQLServer數(shù)據(jù)提供程序的使用SqlConnection創(chuàng)建SqlConnection對(duì)象SqlConnectionconn=newSqlConnection(“DataSource=jy;InitialCatalog=EBuy;IntegratedSecurity=True”);連接字符串DataSource:指明服務(wù)器,機(jī)器域名或IP地址InitialCatalog:數(shù)據(jù)庫(kù)的名字IntegratedSecurity:連接使用用戶的Windows登錄UserID:SQLServer中的用戶名Password:SQLServer中的用戶名匹配的密碼18SQLServer數(shù)據(jù)提供程序的使用例:SqlConnectionconn=newSqlConnection(“DataSource=…;InitialCatalog=…;UserId=…;Password=…”);也可以直接實(shí)例化一個(gè)SqlConnection對(duì)象,然后用ConnectionString屬性初始化該對(duì)象SqlConnectionconn=newSqlConnection();conn.connectionstring=“DataSource=…;InitialCatalog=…;UserId=…;Password=…”;打開(kāi):Open關(guān)閉:Close19SQLServer數(shù)據(jù)提供程序的使用SqlCommand創(chuàng)建SqlCommand對(duì)象SqlCommandcmd=newSqlCommand(“select*fromcustomer”,conn);SqlCommandcmd=newSqlCommand(); mandText=“select*fromcustomer”; cmd.CommandType=CommandType.Text; cmd.Connection=conn;TableDirect:直接的表操作StoredProcedure:存儲(chǔ)過(guò)程命令Text:文本命令(一般是構(gòu)造的SQL命令)20SQLServer數(shù)據(jù)提供程序的使用SqlCommandSqlCommand的參數(shù)SqlCommandcmd=newSqlCommand(); mandText=“selectnamefromCategorieswhereCategoryId=@CategoryId”; cmd.CommandType=CommandType.Text; SqlParameterparamID=newSqlParameter(“@CategoryId”,SqlDbT); paramID.Value=m_Id; cmd.Parameters.Add(paramID); cmd.Connection=conn;21SQLServer數(shù)據(jù)提供程序的使用SqlCommand查詢數(shù)據(jù)使用SQL的select命令會(huì)得到一組數(shù)據(jù)集,應(yīng)該使用SqlCommand對(duì)象的ExecuteReader方法SqlCommandcmd=newSqlCommand(“selectCategoryNamefromCategories”,conn); SqlDataReaderrdr=cmd.ExecuteReader(); stringmyvalue=rdr.Getstring(2); 22SQLServer數(shù)據(jù)提供程序的使用SqlCommand插入數(shù)據(jù)使用SqlCommand對(duì)象的ExecuteNonQuery方法stringinsertstring=@”insertintoCategories(CategoryName,Description)values(‘Miscellaneous’,’Whatever’)”; SqlCommandcmd=newSqlCommand(insertstring,conn); cmd.ExecuteNonQuery();23SQLServer數(shù)據(jù)提供程序的使用SqlCommand更新數(shù)據(jù)使用SqlCommand對(duì)象的ExecuteNonQuery方法,用于執(zhí)行一個(gè)無(wú)返回值的sql查詢stringupdatestring=@”updateCategoriessetCategoryName=‘other’whereCategoryName=‘Miscellaneous’”; SqlCommandcmd=newSqlCommand(updatestring); cmd.Connection=conn; cmd.ExecuteNonQuery();24SQLServer數(shù)據(jù)提供程序的使用SqlCommand刪除數(shù)據(jù)使用SqlCommand對(duì)象的ExecuteNonQuery方法stringdeletestring=@”deletefromCategorieswhereCategoryName=‘other’; SqlCommandcmd=newSqlCommand(); cmd.CommandText=deletestring; cmd.Connection=conn; cmd.ExecuteNonQuery();25SQLServer數(shù)據(jù)提供程序的使用SqlCommand得到單一值使用SqlCommand對(duì)象的ExecuteScalar方法,能讓數(shù)據(jù)庫(kù)執(zhí)行并且只返回你所需要的單獨(dú)值SqlCommandcmd=newSqlCommand(“selectcount(*)fromCategories”,conn); intcount=(int)cmd.ExecuteScalar();26SQLServer數(shù)據(jù)提供程序的使用SqlDataReader創(chuàng)建SqlDataReader對(duì)象SqlDataReaderdr=cmd.ExecuteReader();讀取數(shù)據(jù)快速只向前,只讀一遍while(rdr.read()){ stringcontact=(string)rdr[“ContactName”]; stringcompany=(string)rdr[“companyName”]; Console.Write(“{0,-25}”,contact); Console.Write(“{0,-25}”,company);}27SQLServer數(shù)據(jù)提供程序的使用SqlDataAdapter管理與數(shù)據(jù)源的連接(DataSet只存儲(chǔ)數(shù)據(jù)而不與數(shù)據(jù)源發(fā)生交互)例如:當(dāng)data填充數(shù)據(jù)的時(shí)候打開(kāi)連接將數(shù)據(jù)加載到DataSet中關(guān)閉連接28SQLServer數(shù)據(jù)提供程序的使用SqlDataAdapter得到SqlDataAdapter的實(shí)例使用SQL命令和連接對(duì)象來(lái)讀寫(xiě)數(shù)據(jù)SqlDataAdapterCustomers=newSqlDataAdapter(“selectCustomerID,CustomerNamefromCustomers”,conn); select語(yǔ)句指明了將哪些數(shù)據(jù)讀入數(shù)據(jù)集SqlCommandecmd=newSqlCommand(“selectCustomerID,CustomerNamefromCustomers”,conn); SqlDataAdapterCustomers=newSqlDataAdapter(cmd);29SQLServer數(shù)據(jù)提供程序的使用SqlDataAdapter用SqlDataAdapter獲取數(shù)據(jù)一旦初始化號(hào)SqlDataAdapter,就可以調(diào)用其Fill方法將需要的數(shù)據(jù)加載到DataSetSqlConnectionconn=newSqlConnection("DataSource=YourSqlServer;
InitialCatalog=YourDataBase;UserID=YourID;Password=YourPassword");SqlCommandcmd=newSqlCommand("select*fromCustomers",conn);SqlDataAdapterda=newSqlDataAdapter(cmd);DataSetds=newDataSet();using(conn){conn.Open();da.Fill(ds);conn.Close();}30SQLServer數(shù)據(jù)提供程序的使用SqlDataAdapter使用SqlDataAdapter更新數(shù)據(jù)源31SQLServer數(shù)據(jù)提供程序的使用事務(wù)的處理使用SqlTransaction需要從連接對(duì)象中獲取事物:SqlTransactiontrans=conn.BeginTransaction();獲取事物后,把需要事物處理的操作包括到事物之中SqlConnectionconn=newSqlConnection();SqlCommandcmd=newSqlCommand(conn,“…");SqlDataAdapterda=newSqlDataAdapter(cmd);InitSqlDataAdapter(da,conn,);DataSetds=newDataSet();conn.Open();SqlTransactiontrans=conn.BeginTransaction();da.Fill(ds);try{UpdateDataSource(d
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流服務(wù)對(duì)客戶滿意度的影響試題及答案
- 采購(gòu)管理中的 SWOT 分析技巧試題及答案
- 人類演化的重要證據(jù)試題及答案
- 高??萍紕?chuàng)新團(tuán)隊(duì)支持計(jì)劃實(shí)施辦法
- 2024年CPMM奇葩試題與答案解析
- 2024年CPSM考試綜合練習(xí)試題及答案
- 現(xiàn)代物流與供需關(guān)系分析試題及答案
- 快速掌握CPMM試題及答案
- 江蘇鹽城市時(shí)楊中學(xué)2025屆高三第一次模擬考試化學(xué)試卷含解析
- 2025屆安徽省合肥市區(qū)屬中學(xué)高考仿真模擬化學(xué)試卷含解析
- 租賃(出租)物品清單表
- 環(huán)境經(jīng)濟(jì)學(xué)課件:第十次課 環(huán)境污染與效率費(fèi)效分析等
- 高處安全作業(yè)票填寫(xiě)模板(2022更新)
- 小學(xué)生幼兒園文明禮儀教育主題班會(huì)(可愛(ài)卡通版)
- 新道路貨物運(yùn)輸企業(yè)質(zhì)量信譽(yù)考核檔案
- 國(guó)際收付清算體系與實(shí)務(wù)從原理看SWIFT
- 廣東海事局轄區(qū)主要防臺(tái)錨地或泊區(qū)情況表
- 風(fēng)險(xiǎn)與機(jī)遇識(shí)別評(píng)價(jià)表
- PPAP培訓(xùn)資料
- 蓋梁支架施工方案(三立柱穿鋼棒法)
- 簡(jiǎn)易注銷全體投資人承諾書(shū)
評(píng)論
0/150
提交評(píng)論