




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1.NET數(shù)據(jù)集&數(shù)據(jù)提供程序第四章2教學(xué)目標(biāo)了解數(shù)據(jù)庫訪問的發(fā)展過程理解ADO.NET的工作原理掌握ADO.NET操作數(shù)據(jù)庫的方法3數(shù)據(jù)訪問技術(shù)的發(fā)展ODBCNativeLibraryOLEDB(DAO/RDO)ADOADO.NET4OLEDBOLEDB的數(shù)據(jù)訪問序列:初始化OLE連接到數(shù)據(jù)源發(fā)出命令處理結(jié)果釋放數(shù)據(jù)源對象并停止初始化OLE5OLEDBOLEDB的組件模型:DataProviders數(shù)據(jù)提供者DataConsumers數(shù)據(jù)使用者ServiceComponents服務(wù)組件執(zhí)行數(shù)據(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ù)訪問組成一個(gè)或多個(gè)DataTable對象的集合數(shù)據(jù)行、數(shù)據(jù)列、主鍵、外鍵、約束和數(shù)據(jù)的關(guān)系信息用途容納由.NETFrameworkDataProvider獲取的數(shù)據(jù)或者XML中加載的數(shù)據(jù)9ADO.NET.NETFramework數(shù)據(jù)提供程序:組件的目的實(shí)現(xiàn)數(shù)據(jù)操作和對數(shù)據(jù)的快速、只進(jì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)成寫入數(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對象之間的父/子關(guān)系,關(guān)系數(shù)據(jù)庫的數(shù)據(jù)源的table之間的約束關(guān)系//定義關(guān)系對的父值DataColumnparent=DataSet1.Tables[“Customers”].Columns[“CustID”];//定義關(guān)系對的子值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ù)的過期時(shí)間DataSet1.ExtendProperties.Add(“ExpiredTime”,DateTime.Now.Add(newTimeSpan(0,1,0,0)));17SQLServer數(shù)據(jù)提供程序的使用SqlConnection創(chuàng)建SqlConnection對象SqlConnectionconn=newSqlConnection(“DataSource=jy;InitialCatalog=EBuy;IntegratedSecurity=True”);連接字符串DataSource:指明服務(wù)器,機(jī)器域名或IP地址InitialCatalog:數(shù)據(jù)庫的名字IntegratedSecurity:連接使用用戶的Windows登錄UserID:SQLServer中的用戶名Password:SQLServer中的用戶名匹配的密碼18SQLServer數(shù)據(jù)提供程序的使用例:SqlConnectionconn=newSqlConnection(“DataSource=…;InitialCatalog=…;UserId=…;Password=…”);也可以直接實(shí)例化一個(gè)SqlConnection對象,然后用ConnectionString屬性初始化該對象SqlConnectionconn=newSqlConnection();conn.connectionstring=“DataSource=…;InitialCatalog=…;UserId=…;Password=…”;打開:Open關(guān)閉:Close19SQLServer數(shù)據(jù)提供程序的使用SqlCommand創(chuàng)建SqlCommand對象SqlCommandcmd=newSqlCommand(“select*fromcustomer”,conn);SqlCommandcmd=newSqlCommand(); mandText=“select*fromcustomer”; cmd.CommandType=CommandType.Text; cmd.Connection=conn;TableDirect:直接的表操作StoredProcedure:存儲過程命令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命令會得到一組數(shù)據(jù)集,應(yīng)該使用SqlCommand對象的ExecuteReader方法SqlCommandcmd=newSqlCommand(“selectCategoryNamefromCategories”,conn); SqlDataReaderrdr=cmd.ExecuteReader(); stringmyvalue=rdr.Getstring(2); 22SQLServer數(shù)據(jù)提供程序的使用SqlCommand插入數(shù)據(jù)使用SqlCommand對象的ExecuteNonQuery方法stringinsertstring=@”insertintoCategories(CategoryName,Description)values(‘Miscellaneous’,’Whatever’)”; SqlCommandcmd=newSqlCommand(insertstring,conn); cmd.ExecuteNonQuery();23SQLServer數(shù)據(jù)提供程序的使用SqlCommand更新數(shù)據(jù)使用SqlCommand對象的ExecuteNonQuery方法,用于執(zhí)行一個(gè)無返回值的sql查詢stringupdatestring=@”updateCategoriessetCategoryName=‘other’whereCategoryName=‘Miscellaneous’”; SqlCommandcmd=newSqlCommand(updatestring); cmd.Connection=conn; cmd.ExecuteNonQuery();24SQLServer數(shù)據(jù)提供程序的使用SqlCommand刪除數(shù)據(jù)使用SqlCommand對象的ExecuteNonQuery方法stringdeletestring=@”deletefromCategorieswhereCategoryName=‘other’; SqlCommandcmd=newSqlCommand(); cmd.CommandText=deletestring; cmd.Connection=conn; cmd.ExecuteNonQuery();25SQLServer數(shù)據(jù)提供程序的使用SqlCommand得到單一值使用SqlCommand對象的ExecuteScalar方法,能讓數(shù)據(jù)庫執(zhí)行并且只返回你所需要的單獨(dú)值SqlCommandcmd=newSqlCommand(“selectcount(*)fromCategories”,conn); intcount=(int)cmd.ExecuteScalar();26SQLServer數(shù)據(jù)提供程序的使用SqlDataReader創(chuàng)建SqlDataReader對象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只存儲數(shù)據(jù)而不與數(shù)據(jù)源發(fā)生交互)例如:當(dāng)data填充數(shù)據(jù)的時(shí)候打開連接將數(shù)據(jù)加載到DataSet中關(guān)閉連接28SQLServer數(shù)據(jù)提供程序的使用SqlDataAdapter得到SqlDataAdapter的實(shí)例使用SQL命令和連接對象來讀寫數(shù)據(jù)SqlDataAdapterCustomers=newSqlDataAdapter(“selectCustomerID,CustomerNamefromCustomers”,conn); select語句指明了將哪些數(shù)據(jù)讀入數(shù)據(jù)集SqlCommandecmd=newSqlCommand(“selectCustomerID,CustomerNamefromCustomers”,conn); SqlDataAdapterCustomers=newSqlDataAdapter(cmd);29SQLServer數(shù)據(jù)提供程序的使用SqlDataAdapter用SqlDataAdapter獲取數(shù)據(jù)一旦初始化號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需要從連接對象中獲取事物: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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西警察學(xué)院《道路勘測設(shè)計(jì)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣西防城港市上思縣重點(diǎn)達(dá)標(biāo)名校2024-2025學(xué)年初三一測化學(xué)試題試卷含解析
- 洛陽科技職業(yè)學(xué)院《金屬切削原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 吉林省長春市教研室重點(diǎn)達(dá)標(biāo)名校2024-2025學(xué)年初三下學(xué)期第五次月考(一模)英語試題試卷含答案
- 江西冶金職業(yè)技術(shù)學(xué)院《英語聽力三》2023-2024學(xué)年第二學(xué)期期末試卷
- 曲靖師范學(xué)院《高級英語A2》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶師范大學(xué)《環(huán)境生態(tài)工程CAD》2023-2024學(xué)年第二學(xué)期期末試卷
- 河北省南宮市私立實(shí)驗(yàn)小學(xué)2024-2025學(xué)年五下數(shù)學(xué)期末檢測模擬試題含答案
- 山西省晉城市部分學(xué)校 2024-2025學(xué)年七年級下學(xué)期3月月考生物試題(含答案)
- 2024-2025學(xué)年福建省寧德市高二下學(xué)期3月月考英語試題(含答案)
- 2025年科普知識競賽題及答案(共100題)
- 猜猜我有多愛你(繪本)
- 2019年遼寧省普通高考志愿填報(bào)表(一)
- x-y數(shù)控工作臺機(jī)電系統(tǒng)設(shè)計(jì)
- 《地基基礎(chǔ)-基樁靜荷載試驗(yàn)》考試復(fù)習(xí)題庫(含答案)
- 工程交付使用表
- 電子物證專業(yè)考試復(fù)習(xí)題庫(含答案)
- 質(zhì)量檢驗(yàn)控制流程圖
- 人教版音樂三年級下冊知識總結(jié)
- 2022年江蘇對口單招市場營銷試卷剖析
- 【課件】第7課 西方古典美術(shù)的傳統(tǒng)與成就 課件高中美術(shù)魯美版美術(shù)鑒賞
評論
0/150
提交評論