




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
ADO.NETADO.NET組件的應用尤為重要。本節將覆蓋數據庫的基本知識問題和ADO.NET的概念問題。面試題 ADO.NET和數據庫的關系統環境。關于關系型數據庫的概念與.NET應用之間的關系,對于每一位.NET程序員來說是必須了解的,那么ADO.NET和數據庫的關系是什么?SQLServer2008關系數據庫是建立在集合代數基礎上,應用數學方法來處理數據庫中的數據?,F實世界中的各種實體以及實體之間的各種聯系均用關系模型來表示。換句話說,關系數據庫是建關型上據。1970M員Edarankodd業界第一《AeaonalModelofDaaforLrgeSharedDaaank》,odd。許多因素導致了信息,例如和的數字化,和從RFID獲得的傳感器信息,公司數字信息的數量在急劇增長。微軟的SQLServer2008滿足這些數據和下一代數據驅動應用程序的需求,支持數據平臺愿景:關鍵任務企業數據平臺、動態開發、關系數據和商業智能。SQLServer2008是微軟的一個重大的產品版SQLServer版本。ADO.NET的名稱于ADO(ActiveXDataObjects),這是一個廣泛的類組,用于在以往的技術中數據。之所以使用ADO.NET名稱,是因為希望表明這是在.NET編程環境中優先使用的數據接口。ADO.NET提供了平臺互用性和可伸縮的數據。ADO.NET增強了對非連接編程模式是支持,并支持RICHXML。由于傳送的數據都是XML格式的,因此任何能夠XML格式的應用程序都可以進行數據處理。事實上,接收數據的組件不一定必須是ADO.NET組件,它可以是基于一個VisualStudio的解決方案,也可以是任何運行在其他平ADO.NET允許和不同類型的數據源以及數據庫進行交互,然而并沒有與此相關的一ADO.NETIntranetInternet上使用的高效多層數據庫應用程序而設計的。ADO.NET提供了平臺互用性和可伸縮的數據,允許和不同類型的數據源以及數據庫進行交互。它是Windows平臺下應用系統關系數據最成技術面試81ADO.NET支持多少種數據在開發應用系統的過程中,為了滿足用戶的需求,須支持多種數據源,以擴展ADO.NET時,ADO.NET接口。那么,ADO.NET支持多少種數據源?OLEADO.NETOLEDB是微軟戰略性地通向不同數據源的低級應用程序接口。OLEDB不僅包括軟的組件對象模型(COM)的一種設計,OLEDB是一組讀寫數據的方法(在過去可能被稱為)。ODBC(OpenDatabaseConnectivity,開放數據庫互連)(WindowsOpenServicesArchitecture,WOSA)中有關數據庫的一個組成部分。它建立了一組規范,并提供了一組對數據庫的標準API(應用程序編程接口)。這些API利用語句送給ODBC。System.Data命名空間提供對表示ADO.NET結構的類的。通過ADO.NET可以生5類:SQLServer數據源、ORACLE數據源、OLEDB提供商、ODBCXML6.1列出了ADO.NET支持的數據源類型。6.1ADO.NET支持的數據源類關鍵 這個類集合用于托管空間中的SQLServer數據庫。事實上,這不是連接SQLServer數據庫的唯一方案。通OLEDB或者直接通過ODBC都可以,但是Sql下的組件是微軟公司針SQLServer數據庫量身定做,所SQLServerOracle的.NETFramework數據提供程序描述了用于在托管空間中Oracle數據源的類集合。這個類集合與只針對Oracle數據庫產品,并且需要Oracle客戶端組件Oracle.DataAccess.dll用于托管空間中的OLEDB數據源的類集用于ODBC的.NETFramework數據提供程序描述用于托管空間中的ODBC數據源的類集合面試82如何提高數據庫連接的使用Oracle.OracleConnection SqlConnectionconn=newSqlConnectionconn=newIntegratedSecurity=SSPI");SqlConnectionconnnewSqlConnection("DataSource=localhost;IntegratedSecurity=SqlConnectionSqlConnection("datasource=(local);initialcatalog=xr;integratedsecurity=SSPI;persistsecurityinfo=False;workstationsize=4096; 的access數據OLEDBConnectionOLEDBConnection(@"Provider=UserID=Admin;Data OLEDBConnectionOLEDBConnection("Provider=MSDAORA;DataSource=PersistSecurityInfo=False;Integrated OLEDBConnectionOLEDBConnection("Provider= .Jet.OLEDB.4.0;DataSource=c:\bin\LocalAccess40.mdb"); SQLServer數據OLEDBConnectionOLEDBConnection("Provider=SQLOLEDB;DataSource=IntegratedIntegrated以下是System.Data.Oracle 常用的一些連接字符串OracleConnection .OracleConnection("DataSource=Oracle8i;IntegratedSecurity=yes");SQLServerOdbcConnectionOdbcConnection("Driver={SQLServer}; OdbcConnection ODBCforOracle};Server=PersistSecurity OdbcConnection AccessDriver OdbcConnection ExcelDriver OdbcConnection TextDriver(*.txt;*.csv)}; OdbcConnectionconn=newDB2Connectionconn=newIBM.Data.DB2.DB2Connection("DATABASE=SAMPLE;UID=<username>;DB2Connectionconn=newIBM.Data.DB2.DB2Connection("DATABASE=ADO.NETOdconncon基本上目前市面上的主流數據庫它都能很好地支持。Syse.Daa.Sq.Sqonnecon的SQLServer數據庫接支的最好性也是最優。Sye.DaaOrace.ADO.NET選擇不同的數據庫的接模式時,盡量選擇各自數據庫對應的連接串。因為各個支持ADO.NET的數據庫廠商會對各自的數據庫引擎作最優處理。盡量避免使用面試題 如何安全地管理連接字符appSettings標記用于配置自定義的應用程序設置,比如數據庫連接字符串、文件路徑tionSettings類,在代碼中<appSettings>標記中指定的鍵/值對。示例代碼如下:<!—定義一個密鑰<addkey="EncryptionKey" 接字符串--<addkey="ConnString"value="server=ProductionServer;database=DataServer;uid=sa;pwd=mypwd;"/>注意:web.config文件的<appSettings>file屬性。這個屬性指file屬性指定配置文件時,必須要把<appSettings>作為根結點,而不上面web.config文件中的ConnString是明文數據庫連接串,雖然web.config文件了。web站點的管理員可以很輕松地獲取數據庫連接的用戶信息,但實際應用中,Web站點管理員和數據庫管理員各盡其責管理自己的服務器,那么如何避免上述情況的發web.configConnStringvalue字段加密。下面是加密以及的代碼。namespacenamespace{publicclass{publicstringEncrypt(stringoriginalString,string{stringencryptedString=Symmetricsym=newSymmetric(Symmetric.Provider.Rijndael,true);EncryptionClassLibrary.Encryption.Datakey=newEncryptionClassLibrary.Encryption.DataencryptData=sym.Encrypt(newEncryptionClassLibrary.Encryption.Data(originalString),key);encryptedString=encryptData.ToBase64();returnencryptedString;//返回加密串}publicstaticstringHash(stringoriginalString,string{stringhushedString=Hashh=newHash(EncryptionClassLibrary.Encryption.Hash.Provider.EncryptionClassLibrary.Encryption.Datahkey=newh.Calculate(d,hushedString=return }publicstringDecrypt(stringencryptedString,string {stringoriginalString=Symmetricsym=newSymmetric(Symmetric.Provider.Rijndael,true);EncryptionClassLibrary.Encryption.Datakey=newEncryptionClassLibrary.Encryption.DataencryptedData=newencryptedData.Base64=encryptedString;EncryptionClassLibrary.Encryption.DatadecryptedData=sym.Decrypt(encryptedData,key);//調用 方法originalString=decryptedData.ToString(); returnoriginalString; }publicstaticstring{Guidg=Guid.NewGuid(); stringx=g.ToString();stringy=x.Re stringkey="";if(y.Length>=32)return }}}地解決了web.config文件中的ConnString是明文、易被的問題面試題 using子句管理數據庫連接有何作在.NETusing,C#using引入命名空間,那么using子句管理數據庫連接有何作用?usingusing別名:using+別名=包括詳細命名空間信息的具體類型。例如,可以用以下 pression命名空間: pression.GZipStream,這樣給程序書寫帶來方獲?。罕硎緞摻ㄗ兞坎⑵涑跏蓟?,以便系統資源。using語句可獲取一個或提供resourceexpression,在將控制權傳遞給using語句之前必須獲取資源。使用:表示資源并使用資源執行操作,using和Endusing之間的語句代表資resourcenameDispose()方法,這使該對象可以完全終止其非托管資源,Endusing語句釋放using塊控制的資源。voidvoid{stringsqlconnstr=DataSetds=newDataSet();到using(SqlConnectionsqlconn=new{SqlDataAdaptersqld=SqlDataAdapter("SELECTnonamebirthaddressFROM",sqlconn);sqld.Fill(ds,"tabstudent");//填充數據}}//tabstudentDataTable作為數據源,為控件綁定數據GridView1.DataSourceds.Tables["tabstudent"].DefaultView;}{{SqlDataAdaptersqld=SqlDataAdapter("SELECTno,name,birth,addressFROMstudent",sqlconn);sqldFill(ds, }可以發現,usingC#DataSet是否成功地填充數據,C#sqlconn所占用的資源釋放,using語句的這個功能強烈推薦使用。using塊的工作方式類Try…Finally構造,在該構造中,Try塊使用資源Finally常(除StackOverflowException外),也是如此。數據庫操作的第一步就是連接數據庫,接著就是對數據庫的讀寫操作。ADO.NET提ADO.NET讀寫數據庫方面的面試面試題 ADO.NET如何控制數據庫連接ADO.NET在初次打開連接時,將根據完全匹配算法創建連接池,該算法將池與連接及(在使用集成的安全性時)按Windows標識來建立池連接。usingusing(SqlConnectionconnection=newSqlConnection("Integrated=SSPI;Initial{ }using(SqlConnectionconnection=SqlConnection("IntegratedSecurity=SSPI;InitialCatalog={ }using(SqlConnectionconnection=SqlConnection("IntegratedSecurity=SSPI;InitialCatalog={}根據為InitialCatalog分配的值,第一個和第二個連接字符串有所不同。注意:建議在使用完連接時一定要關閉連接,以便連接可以返回池。要關閉連接,可ConnectionClose()Dispose()C#using語句當調用ADO.NET的connection.OpenClose()方法時,池進程會將連接返回到活動連接池集中,而不是真正關閉連接。連接返回到池中之后,即可在下一個Open()方法調用中重復使用。面試題 ADO.NET中如何執行動態的SQL語語句是指從客戶端應用程序發送到數據庫服務器時由數據庫服務器并執行的SQL語句。那么,ADO.NET中是如何執行動態的SQL語句呢?mandmandSQL為使用數據庫提供了極為靈活的機制。動態SQL允許用戶Adhoc查詢并返回活動查詢的結果,以及執行SQLDDL語句創建數據庫對象。在ADO.NET中,mand對象的主要作用就是向SQLServer數據庫執行的一個Transact-SQL語句或存儲過程。表6.2列舉了常用 mand方法表 用法:ExecuteNonQuery()INSERT、UPDATE、DELETE操作,這個方DataReaderint類型的值,即在執行之后在數據庫中SqlConnectionthisConnection=newSqlConnection(@"DataSource=scott;InitialCatalog=northwind;PersistSecurityInfo=True;UserID=sa;Password=pass1234");thisConnection.Open();//打開連接 mand= introwsAffected= ine("RowsUpdated={0}"rowsAffected); 結果。ExecuteReader()返回一個DataReader對象:如果在mand對象中調用,則返回SqlDataReader;如果在OLE mand對象中調用,返回的是OLEDBDataReader。mandcmd= mand("SELECT*FROMtitles", SqlDataReaderreader=cmd.ExecuteReader(); ExecuteScalar()SQLCOUNT()、AVG()、MIN()、MAXSUM()函數,這些函數都是mandcmd=mand("SELECTMin(advance)FROMdecimalamount=(decimal)cmd.ExecuteScalar(); ine("ExecuteScalarreturned{0:c}",amount);在.NET的System.Data.Sql命名空間下的mand對象提供了許多簡單高效ExecuteReader()方法。面試題 解釋ADO.NET中的事務處理作松地回答此類面試題。本小節將借助回答此問題,介紹ADO.NET中事務的屬性。性)、Durable(永久性)6.3列出了事物的各個屬性。6.3事務屬 Consistent(一致性Isolated(性A100元:UPDATETABLESETAccountAmount=AccountAmount-100WHERE UPDATETABLESETAccountAmount=AccountAmount+100WHERE ABA了100BTranacon(事務)機制就是負責完成這種需求的機制:通過egnranaconobac(回滾oError的值會>0,obackot mandText="UPDATEmandText="UPDATETABLESETAccountAmount=AccountAmount-100WHERE{ mandText="UPDATETABLESET=AccountAmount+100WHEREAccountID=B";//修改語句 }{}{ }從此例中可以看出,Transaction對象是在Conneciton對象建立以后,才能通過ConnectionBeginTransaction()方法來建立。事實上,此時,必須保持事務與數據庫的連接,如果在連接建立之前調用BeginTransaction(),會得到一個異常。ADO.NET中定義一個事務,需要使用SqlTransaction命令,在這一命令之后的任何Commit用于完成事務,并使事務對數據庫所作的修改成為永久的。Rollback命令用于取消一個事務,并還原事務對數據庫所作的修改。要SqlTransaction命令,在這一命令之后的任何語句都將被認為是Commit用于完成事務,并使事務對數據庫所作的修改成為永久的,Rollback命令用于取消一個事務,并還原事務對數據庫所作的修改。面試題 如何生成SqlDataAdapter的更新命SqlDataAdapter類型的更新方法,是通 mand() mand()mand()這3個成員來實現的。程序員需要手動構造這3個 mand類型對 類型可以根 mand,來自動生成更新命令SqlCommandBuilder會將其自身為RowUpdating的偵。為了生成INSERT、UPDATE或DELETE語句, mandBuilder會自動使用 mand屬性來檢索所 mand,則應調用RefreshSchema()方法解決方法:用mandBuilder()DataSetUI層做任意操作后,然后用mandBuilder()DataSet修改的數據更新到數據庫中,而不是每次修改DataSet都更新到數據庫。示例代碼如下:publicpublicintUpdateByDataSet(DataSetds,stringstrTblName,string{{SqlConnectionconn=newSqlDataAdaptermyAdapter=newSqlDataAdapter(); mand= mand("SELECT*FROM"+strTblName),(SqlConnection) mand mandBuilder=newmyAdapter.Update(ds return}{throw}ceptioncatch(Exception{thrownew}}注意:只能更新一個表,不能更新兩個或兩個以上相關聯的表。表中必須有主鍵。更使用mandBuilder可以節省代碼量和編寫時間,這個方法可以代替SQLLINQ,語言級集成查詢(LanguageINtegratedQuery)。經過了最近20年,面向對象編程技術(object-orientedprogramming)在工業領域的應用已經進入了一個面向對象技術誕生以來并沒有解決降低和整合信息數據(accessingandintegrating面試89什么LINQ作為一項新技術被微軟公司.NETFramework3.5所支持,它給.NET程序員帶來LINQLINQ提供了一條更常規的途徑即給.NetFramework(allsourcesofinformation)的具有多種用途(general-purpose)的語法查詢特性(query者類似XML特性(XML-specific)更好的方式。這些語法特性就叫做.NETLanguageLINQ類庫。PLINQParallelLINQXML和內存中的數據集合。執行于服務器上的查詢語句(例如LINQtoSQL)顯然無法實現這個功能。將LINQ語句轉換為PLINQ語句極為簡單——只需要在查詢語句中From子句所指定改為調用這個并行的LINQ版本。管道處理:一個線程用于數據源,而其他的線程則用于處理查詢語句,二者stopandgo:用于處理結果集需要被一次返回時(ToList、ToArray或對invertedenumeration:該方法并不需要實現收集到所有的輸出,然后在單一的線程ForAll擴展傳遞到每個線程中。這是目前為ForAll中的函數是線程安全的,且最好不包含任何lock之類的互斥語句。LINQ(LanguageINtegratedQuery,語言級集成查詢)VisualStudio2008中的領軍人物。借助于LINQ技術,可以使用一種類似SQL的語法來查詢的數據。目前為止,LINQSQLServer、XML以及內存中的數據集合,開發人員也可以面試題 LINQ查詢關鍵LINQ是一門查詢語言,凡是語言,它都有編寫規范,通過一些關鍵字的組合實現最終的查詢。本小節將覆蓋LINQ查詢關鍵字的知識點。FROMSELECTWHEREORDERBYGROUPBYJOININTO在使用LINQ查詢數據源時經常用到的關鍵字FROM、SELECT、WHERE、ORDERBY、GROUPBY、JOIN和INTO。LINQFROMFROM子句開頭。如果該查詢表達式還FROM子句開頭。FROM子句指定查詢操作的數SELECTWHERE(如邏輯“與”、邏輯“或”)組成。一個查詢表達式可以不包含WHERE子句,也可以ORDERBYLINQ查詢表達式中,ORDERBY子句可以對查詢結果進行排序。排序方式可以為GROUPBY在查詢表達式中,group子句對查詢的結果進行分組,并返回元素類型為IGrou<TKey,ement>的對象序列注意:TKey指定IGrou ement>的鍵的類型,ement指定 法與IEnumerable<T>的元素的方式非常相似,在此不做詳細介紹。JOININTOLINQINTO子句可以創建一個臨時標識符,使用該標識符可以GROUPBY、JOINSELECTINTO子句的JOIN子句。varleftjoin=frompinjoincinonp.CategoryIDequalsc.CategoryIDintoprofromxinpro.DefaultIfEmpty()selectp.ProductName;SELECTCOUNT(*)ASFROM[dbo].[Products]ASLEFTOUTERJOIN[dbo].[Categories]AS[t1]ON[t0].[CategoryID]=([t1].[CategoryID])BY、GROUPBY、JOIN和INTO。面試題 什么是LINQtoSQL查詢技ontextdb=new//LINQtoSQL對 pany=fromtbindb.PageListwheretb.PageName==CurrentPageselectINSERTINSERT用于向數據庫添加記錄。一般情況下,使用“Dontext.表映射集LINQtoSQLUnitofWork模式,所以,對數據庫的操作不會立即提交到數據庫,而要調用Dontext的SubmitChanges()方法,所有改動才會被提交到數據庫。ontextdb//LINQtoSQL對var=newCustomer{ ",="JohnDoe",="SalesManager",Address="1Way",CityRegion="WA",Country="USA",Phone="(425)555-Fax );//UPDATE操作用于更新數據庫中某已存在記錄的信息。在LINQtoSQL中,UPDATECustomercust=db.Customers.First(c=>c.CustomerID=="ALFKI");cust.ContactTitle="Vice Customercust=db.Customers.First(c=>c.CustomerID=="ALFKI");cust.ContactTitle="Vice //將狀態的實體更新到LINQ對象中 //將LINQ對象更新到數據庫中DELETEDELETEDeleteOnSubmit()方法可以實現這個操作。這個方法需要一個參數,就是要刪除的實體類,這里不能直接傳入一個ID進行刪除,要首先通過ID找到相應實體類,傳給DeleteOnSubmit()再刪除,隨后調用Dontext的SubmitChanges()方法,將所有改動提交到數據庫。OrderDetailorderDetailOrderDetailorderDetail=db.OrderDetails.First(c=>c.OrderID==10255&&c.ProductID==36);//將狀態的實體刪除操作更新到LINQ LINQtoSQL(DLINQ)LINQ(.NET語言集成查詢)的一部分,全稱為基.NET語言集成查詢,用于以對象形式管理關系數據,并提供了豐富的查詢面試題 什么是LINQtoDataSet查詢技使用LINQtoDataSet可以更容易地查詢在DataSetLINQtoDataSet擴展方法進一步學習LINQtoDataSet查詢技術。LINQtoLINQtoDataSetLINQtoDataSetDataSet對象中緩存的數據。具體而LINQtoDataSet可以簡化查詢。LINQtoDataSet也可用于查詢從一個或多個數據源合并的數據。這可以使許多需要靈活表示和處理數據的方案(例如查詢本地聚合的數據和WebLINQtoDataSetDataRowExtensionsDataTableExtensions類中的擴展ADO.NET2.0ADO.NET2.0LINQtoDataSet應用程序中有效。圖6.1闡釋了LINQtoDataSet與ADO.NET2.0和數據區的關系。LINQtoDataSetDataSet中緩存的數據?,F在還可以在查詢自動功能。下面這段代碼展示了DataTableExtensions中的擴展方法。publicpublicstaticEnumerableRowCollection<DataRow>AsEnumerable(thisDataTablepublicstaticDataViewAsDataView(thisDataTablepublicstaticDataViewAsDataView<T>(thisEnumerableRowCollection<T>source)whereT:DataRowpublicstaticDataTableCopyToDataTable<T>(thisIEnumerable<T>source)whereT:DataRowtable,LoadOptionoptions)whereT:publicstaticvoidCopyToDataTable<T>(thisIEnumerable<T>source,DataTabletable,LoadOptionoptions,FillErrorEventHandlererrorHandler)whereT:6.1DataRowExtensions中的擴展方法主要是從數據行中獲得字段的值(Field()方publicpublicstaticTField<T>(thisDataRowrow,olumnpublicstaticTField<T>(thisDataRowrow,intcolumnIndex)publicstaticTField<T>(thisDataRowrow,stringcolumnName)publicstaticTField<T>(thisDataRowrow,D publicstaticTField<T>(thisDataRowrow,intcolumnIndex,DataRowVersionpublicstaticTField<T>(thisDataRowrow,stringcolumnName,DataRowVersionpublicstaticvoidSetField<T>(thisDataRowrow,Dolumncolumn,Tvalue)publicstaticvoidSetField<T>(thisDataRowrow,intcolumnIndex,Tvalue)publicstaticvoidSetField<T>(thisDataRowrow,stringcolumnName,Tvalue)在對IEnumeralbe進行數據行的集合操作如DistinctExceptUnionIntersect、SequenceEqual時,需要使用Syst parer.Default當作比較器作為輸入參數,以保證對DataRow是進行值比較,而不是比較。當然,如SetField()nullSetField()方法將自動將其轉換為Field()可以完成從DBNull.Value到null的轉換。也就是說,如果該字段的值是DBNull.Value時,Field()方法將自動將其轉為null并返回。這個方法是強類型的,不需要像通過列名或者列索引返回字段值一樣將Object類型轉換成需要的類型默認情況下,數據行的Original版本中是沒有值的,試圖時將導致異常的發生。也可以通過調DataRow.AcceptChanges()方法來建立Original版本來避LoadOptions參數CopyToDataTable()擴展方法也會為返回的DataTable自動建立DataRowOriginalCurrent版本。當使用帶LoadOptions輸入參數的CopyToDataTable()擴展方法時,必須為目標DataTable指定主鍵列,否則,該函數只是將源DataTable追加到目標LINQtoDataSetDataSet
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 我的學習伙伴物品介紹作文13篇
- 動物世界中的友情故事童話寫人類作文14篇范文
- 一次充滿創意的手工課寫事周記7篇范文
- 兒童營養不良的評估與膳食改善
- 2025年生態補償機制在生態補償機制與金融創新中的應用報告
- 一次奇妙的探險經歷童話作文(8篇)
- 能源行業數字化轉型中的智能電網2025年智能化運維成本優化研究報告
- 難忘的一次遠足抒情作文(15篇)
- 建筑農民工權益保障2025年行業規范與新型用工模式創新路徑探析
- 單身經濟驅動下小型家電市場年輕化消費趨勢研究報告
- 垃圾滲濾液應急處理服務投標方案技術標
- 質量管理體系全套文件
- 夜市治安管理應急預案
- 明德云學堂義務教育心得
- 珍愛生命中學生心理健康主題班會
- Cmk設備能力指數分析表
- J17J177 鋼絲網架珍珠巖復合保溫外墻板建筑構造
- 高標準農田建設上圖入庫(技術培訓)
- 四川省2020年普通高中學業水平考試通用技術試題及答案
- 膽囊結石伴膽囊炎演示文稿
- 一、高等分離工程-01-緒論2011
評論
0/150
提交評論