版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
MySQL數(shù)據(jù)庫基礎(chǔ)與實(shí)踐7MySQL連接器JDBC和連接池第章本章內(nèi)容7.1MySQL連接器概述7.2MySQL數(shù)據(jù)庫連接過程7.3JDBC對象數(shù)據(jù)庫操作7.4開源連接池7.5案例:分頁查詢大型數(shù)據(jù)庫7.1MySQL連接器概述JDBC(JavaDataBaseConnectivity,Java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的JavaAPI(ApplicationProgrammingInterface,應(yīng)用程序接口),可以為多種關(guān)系型數(shù)據(jù)庫提供統(tǒng)一訪問。7.1MySQL連接器概述Java應(yīng)用程序訪問數(shù)據(jù)庫的一般過程7.1MySQL連接器概述JDBC的基本功能如下:(1)建立與數(shù)據(jù)庫的連接;(2)向數(shù)據(jù)庫發(fā)送SQL語句;(3)處理從數(shù)據(jù)庫返回的結(jié)果。7.1MySQL連接器概述常見的JDBC驅(qū)動程序可分為4種類型:(1)JDBC-ODBCBridgedriver(2)native-API,partlyJavadriver(3)JDBC-NetpureJavadriver(4)nativeprotocol,pureJavadriver7.2MySQL數(shù)據(jù)庫連接過程JDBC是一種底層API,不能直接訪問數(shù)據(jù)庫。要通過JDBC來存取某一特定的數(shù)據(jù)庫,必須依賴于相應(yīng)數(shù)據(jù)庫廠商提供的JDBC驅(qū)動程序。JDBC驅(qū)動程序是連接JDBCAPI與具體數(shù)據(jù)庫之間的橋梁。7.2MySQL數(shù)據(jù)庫連接過程下載的JDBC驅(qū)動包,對于普通的JavaApplication應(yīng)用程序,只需要將JDBC驅(qū)動包引入項(xiàng)目即可。對于JavaWeb應(yīng)用,通常將JDBC驅(qū)動包放置在項(xiàng)目的WEB-INF/lib目錄下。7.2MySQL數(shù)據(jù)庫連接過程JDBC連接MySQL數(shù)據(jù)庫步驟:(1)加載JDBC驅(qū)動程序;(2)創(chuàng)建數(shù)據(jù)庫連接;(3)創(chuàng)建Statement對象;(4)執(zhí)行SQL語句;(5)處理執(zhí)行SQL語句的返回結(jié)果;(6)關(guān)閉連接。7.2MySQL數(shù)據(jù)庫連接過程1.加載JDBC驅(qū)動程序加載驅(qū)動程序的方法是使用java.lang.Class類的靜態(tài)方法forName(StringclassName)。
Class.forName("com.mysql.jdbc.Driver");若加載成功,系統(tǒng)將加載的驅(qū)動程序注冊到DriverManager類中。如果加載失敗,將拋出ClassNotFoundException異常,即未找到指定的驅(qū)動類。7.2MySQL數(shù)據(jù)庫連接過程加載MySQL驅(qū)動程序的完整代碼如下:try{Class.forName(“com.mysql.jdbc.Driver”);}catch(ClassNotFoundExceptionex){System.out.println("加載數(shù)據(jù)庫驅(qū)動時拋出異常!");ex.printStackTrace();}7.2MySQL數(shù)據(jù)庫連接過程2.創(chuàng)建數(shù)據(jù)庫連接Connection接口代表與數(shù)據(jù)庫的連接,只有建立了連接,用戶程序才能操作數(shù)據(jù)庫。一個應(yīng)用程序可與單個數(shù)據(jù)庫有一個或多個連接,也可以與多個數(shù)據(jù)庫有連接。與數(shù)據(jù)庫建立連接的方法是調(diào)用DriverManager類的getConnection()方法。7.2MySQL數(shù)據(jù)庫連接過程getConnection()方法的返回值類型為java.sql.Connection,如果連接數(shù)據(jù)庫失敗,將拋出SQLException異常,其方法調(diào)用如下:Connectionconn=DriverManager.getConnection(Stringurl,StringuserName,Stringpassword);依次指定要連接數(shù)據(jù)庫的路徑、用戶名及密碼,即可創(chuàng)建數(shù)據(jù)庫連接對象。7.2MySQL數(shù)據(jù)庫連接過程若要連接BookStore數(shù)據(jù)庫,則連接數(shù)據(jù)庫路徑的寫法如下:jdbc:mysql://localhost:3306/bookstore也可以采用帶數(shù)據(jù)庫數(shù)據(jù)編碼格式的方式:jdbc:mysql://localhost:3306/bookstore?useUnicode=true&characterEncoding=gb23127.2MySQL數(shù)據(jù)庫連接過程連接BookStore數(shù)據(jù)庫的代碼(用戶名root,密碼123456):try{Stringurl="jdbc:mysql://localhost:3306/bookstore";Stringuser="root";//訪問數(shù)據(jù)庫的用戶名
Stringpassword="123456";//訪問數(shù)據(jù)庫的密碼
Connectionconn=DriverManager.getConnection(url,user,password);System.out.println("連接數(shù)據(jù)庫成功!");}catch(SQLExceptionex){System.out.println("連接數(shù)據(jù)庫失??!");ex.printStackTrace();}7.2MySQL數(shù)據(jù)庫連接過程3.創(chuàng)建Statement對象連接數(shù)據(jù)庫后,要執(zhí)行SQL語句,必須創(chuàng)建一個Statement對象。(1)創(chuàng)建Statement對象(2)創(chuàng)建PreparedStatement對象7.2MySQL數(shù)據(jù)庫連接過程(1)創(chuàng)建Statement對象利用Connection接口的createStatement()方法可以創(chuàng)建Statement對象,用來執(zhí)行靜態(tài)的SQL語句。代碼如下:Statementstmt=conn.createStatement();//conn為數(shù)據(jù)庫連接對象7.2MySQL數(shù)據(jù)庫連接過程(2)創(chuàng)建PreparedStatement對象利用Connection接口的prepareStatement(Stringsql)方法可以創(chuàng)建PreparedStatement對象,用來執(zhí)行動態(tài)的SQL語句。7.2MySQL數(shù)據(jù)庫連接過程假設(shè)已經(jīng)創(chuàng)建了數(shù)據(jù)庫連接對象conn,創(chuàng)建PreparedStatement對象pstmt的代碼如下:Stringsql="select*fromuserswhereu_id>?andu_sex=?";PreparedStatementpstmt=conn.prepareStatement(sql);在執(zhí)行該SQL語句前,需要對每個輸入?yún)?shù)進(jìn)行設(shè)置,設(shè)置參數(shù)的語法格式如下:pstmt.setXxx(position,value);若設(shè)置參數(shù)u_id的值為3,u_sex的值為“女”,代碼如下:pstmt.setInt(1,3);pstmt.setString(2,"女");7.2MySQL數(shù)據(jù)庫連接過程4.執(zhí)行SQL語句創(chuàng)建Statement對象后,就可以利用該對象的相應(yīng)方法來執(zhí)行SQL語句,實(shí)現(xiàn)對數(shù)據(jù)庫的具體操作。Statement對象的常用方法有executeQuery()、executeUpdate()等。7.2MySQL數(shù)據(jù)庫連接過程ResultSetexecuteQuery(Stringsql)方法:該方法用于執(zhí)行產(chǎn)生單個結(jié)果集的SQL語句,如SELECT語句,該方法返回一個結(jié)果集ResultSet對象。intexecuteUpdate(Stringsql)方法:該方法用于執(zhí)行INSERT、UPDATE或DELETE語句以及SQLDDL(數(shù)據(jù)定義語言)語句。該方法的返回值是一個整數(shù),表示受影響的行數(shù)。對于CREATETABLE或DROPTABLE等不操作數(shù)據(jù)行的語句,返回值為0。7.2MySQL數(shù)據(jù)庫連接過程假設(shè)已經(jīng)創(chuàng)建了Statement對象stmt,查詢users表中的所有記錄,并將查詢結(jié)果保存到ResultSet對象rs中,則代碼如下:Stringsql="select*fromusers";ResultSetrs=stmt.executeQuery(sql);若要刪除users表中u_id為7的記錄,則代碼如下:Stringsql="deletefromuserswhereu_id=7";introws=stmt.executeUpdate(sql);7.2MySQL數(shù)據(jù)庫連接過程PreparedStatement對象也可以調(diào)用executeQuery()和executeUpdate()兩個方法,但都不需要帶參數(shù)。若要刪除users表中u_id為7的記錄,則代碼如下:Stringsql="deletefromuserswhereu_id=?";PreparedStatementpstmt=conn.prepareStatement(sql);pstmt.setInt(1,7);introws=pstmt.executeUpdate();7.2MySQL數(shù)據(jù)庫連接過程5.處理執(zhí)行SQL語句的返回結(jié)果使用Statement對象的executeQuery()方法執(zhí)行一條SELECT語句后,會返回一個ResultSet對象。ResultSet對象保存查詢的結(jié)果集,調(diào)用ResultSet對象的相應(yīng)方法就可以對結(jié)果集中的數(shù)據(jù)行進(jìn)行處理。7.2MySQL數(shù)據(jù)庫連接過程ResultSet對象的常用方法如下:booleannext():ResultSet對象具有指向當(dāng)前數(shù)據(jù)行的指針,指針最初指向第一行之前,使用next()方法可以將指針移動到下一行。如果沒有下一行時,則返回false。getXxx(列名或列索引):該方法可獲取所在行指定列的值。其中,Xxx指的是列的數(shù)據(jù)類型。若使用列名作為參數(shù),則getString(“name”),表示獲取當(dāng)前行列名為“name”的列值。列索引值從1開始編號,如第2列對應(yīng)的索引值為2。7.2MySQL數(shù)據(jù)庫連接過程若要獲取users表中第一條記錄的基本信息,代碼如下:Stringsql="select*fromusers";ResultSetrs=stmt.executeQuery(sql);rs.next();intu_id=rs.getInt(1); //或intu_id=rs.getInt("u_id");Stringu_name=rs.getString(2); Stringu_sex=rs.getString("u_sex"); 7.2MySQL數(shù)據(jù)庫連接過程6.關(guān)閉連接連接數(shù)據(jù)庫過程中創(chuàng)建的Connection對象、Statement對象和ResultSet對象,都占用一定的JDBC資源。當(dāng)完成對數(shù)據(jù)庫的訪問之后,應(yīng)及時關(guān)閉這些對象,以釋放所占用的資源。這些對象都提供了close()方法,關(guān)閉對象的次序與創(chuàng)建對象的次序正相反,因此關(guān)閉對象的代碼如下:rs.close();stmt.close();conn.close();
7.3JDBC對象數(shù)據(jù)庫操作7.3.1增加數(shù)據(jù)7.3.2修改數(shù)據(jù)7.3.3刪除數(shù)據(jù)7.3.4查詢數(shù)據(jù)7.3.5批處理
7.3.1增加數(shù)據(jù)JDBC提供了兩種實(shí)現(xiàn)增加數(shù)據(jù)的操作方法:使用Statement對象提供的帶參數(shù)的executeUpdate()方法,通過PreparedStatement對象提供的無參數(shù)的executeUpdate()方法。例7-2 7.3.2修改數(shù)據(jù)JDBC也提供了兩種實(shí)現(xiàn)修改數(shù)據(jù)庫中已有數(shù)據(jù)的方法,同實(shí)現(xiàn)增加操作的方法基本相同,只不過是使用UPDATE命令來實(shí)現(xiàn)更新操作。
7.3.2修改數(shù)據(jù)使用Statement對象實(shí)現(xiàn)修改users表中用戶名為zhangping的用戶,將其密碼修改為654321,其關(guān)鍵代碼如下:Statementstmt=conn.createStatement();Stringsql="updateuserssetu_pwd='654321'whereu_name='zhangping'";inttemp=stmt.executeUpdate(sql);
7.3.2修改數(shù)據(jù)使用PreparedStatement對象實(shí)現(xiàn)修改users表中用戶名為zhangping1的用戶,將其密碼修改為654321,其關(guān)鍵代碼如下:Stringsql="updateuserssetu_pwd=?whereu_name=?";PreparedStatementpstmt=conn.prepareStatement(sql);pstmt.setString(1,"654321");pstmt.setString(2,"zhangping1");inttemp=pstmt.executeUpdate();
7.3.3刪除數(shù)據(jù)使用Statement對象實(shí)現(xiàn)刪除users表中用戶名為zhangping的用戶,其關(guān)鍵代碼如下:Statementstmt=conn.createStatement();Stringsql="deletefromuserswhereu_name='zhangping'";inttemp=stmt.executeUpdate(sql);
7.3.3刪除數(shù)據(jù)使用PreparedStatement對象實(shí)現(xiàn)刪除users表中用戶名為zhangping1的用戶,其關(guān)鍵代碼如下:Stringsql="deletefromuserswhereu_name=?";PreparedStatementpstmt=conn.prepareStatement(sql);pstmt.setString(1,"zhangping1");inttemp=pstmt.executeUpdate();
7.3.4查詢數(shù)據(jù)JDBC同樣提供了兩種實(shí)現(xiàn)數(shù)據(jù)查詢的方法:使用Statement對象提供的帶參數(shù)的executeQuery()方法;通過PreparedStatement對象提供的無參數(shù)的executeQuery()方法。使用SELECT命令實(shí)現(xiàn)對數(shù)據(jù)的查詢操作,查詢的結(jié)果集使用ResultSet對象保存。
7.3.5批處理JDBC使用Statement對象和PreparedStatement對象的相應(yīng)方法實(shí)現(xiàn)批處理,其實(shí)現(xiàn)步驟如下:(1)使用addBatch(sql)方法,將需要執(zhí)行的SQL命令添加到批處理中。(2)使用executeBatch()方法,執(zhí)行批處理命令。(3)使用clearBatch()方法,清空批處理隊(duì)列。
7.3.5批處理使用JDBC實(shí)現(xiàn)批處理有三種方法:? 批量執(zhí)行靜態(tài)的SQL;? 批量執(zhí)行動態(tài)的SQL;? 批量執(zhí)行混合模式的SQL。
7.3.5批處理1.批量執(zhí)行靜態(tài)SQL使用Statement對象的addBatch()方法可以批量執(zhí)行靜態(tài)SQL。優(yōu)點(diǎn)是可以向數(shù)據(jù)庫發(fā)送多條不同的SQL語句。缺點(diǎn)是SQL語句沒有預(yù)編譯,執(zhí)行效率較低,并且當(dāng)向數(shù)據(jù)庫發(fā)送多條語句相同,但僅參數(shù)不同的SQL語句時,需重復(fù)使用多條相同的SQL語句。
7.3.5批處理2.批量執(zhí)行動態(tài)SQL批量執(zhí)行動態(tài)SQL,需要使用PreparedStatement對象的addBatch()方法來實(shí)現(xiàn)批處理。優(yōu)點(diǎn)是發(fā)送的是預(yù)編譯后的SQL語句,執(zhí)行效率高。缺點(diǎn)是只能應(yīng)用在SQL語句相同,但參數(shù)不同的批處理中。因此此種形式的批處理經(jīng)常用于在同一個表中批量更新表中的數(shù)據(jù)。
7.3.5批處理3.批量執(zhí)行混合模式的SQL使用PreparedStatement對象的addBatch()方法還可以實(shí)現(xiàn)混合模式的批處理,既可以執(zhí)行批量執(zhí)行動態(tài)SQL,同時也可以批量執(zhí)行靜態(tài)SQL。
7.4開源連接池?cái)?shù)據(jù)庫連接池的基本思想就是為數(shù)據(jù)庫連接建立一個“緩沖池”,預(yù)先在“緩沖池”中放入一定數(shù)量的連接。當(dāng)需要建立數(shù)據(jù)庫連接時,只需從“緩沖池”中取出一個,使用完畢之后再放回去。
7.4開源連接池?cái)?shù)據(jù)源(DataSource)是目前Web開發(fā)中獲取數(shù)據(jù)庫連接的首選方法。這種方法是首先創(chuàng)建一個數(shù)據(jù)源對象,由數(shù)據(jù)源對象事先建立若干連接對象,通過連接池管理這些連接對象。JNDI是一種將名稱和對象綁定的技術(shù),對象工廠負(fù)責(zé)創(chuàng)建對象,這些對象都和唯一的名稱綁定,應(yīng)用程序可以通過名稱來獲得某個對象的訪問。
7.4開源連接池在Tomcat服務(wù)器下配置MySQL數(shù)據(jù)庫連接池的方法如下:(1)將MySQL數(shù)據(jù)庫的JDBC驅(qū)動程序包復(fù)制到Tomcat安裝路徑下的lib文件夾中。(2)配置數(shù)據(jù)源。配置Tomcat根目錄下conf文件夾中的文件context.xml。(3)在應(yīng)用程序中使用數(shù)據(jù)源。配置數(shù)據(jù)源后,就可以使用javax.naming.Context接口的lookup()方法來查找JNDI數(shù)據(jù)源。
7.5案例:分頁查詢大型數(shù)據(jù)庫1.案例要求使用JDBC執(zhí)行SQL的SELECT命令實(shí)現(xiàn)圖書基本信息的查詢及分頁顯示。
7.5案例:分頁查詢大型數(shù)據(jù)庫2.知識點(diǎn)補(bǔ)充在數(shù)據(jù)查詢、數(shù)據(jù)更新事務(wù)中,如果需要在結(jié)果集中前后移動或顯示結(jié)果集指定的一條記錄的時候,就要用到游動查詢,這時應(yīng)使用帶參數(shù)的createStatement()方法創(chuàng)建語句對象,其語法格式如下:Statementstmt=conn.createStatement(inttype,intconcurrency);
7.5案例:分頁查詢大型數(shù)據(jù)庫type的取值決定滾動方式,其取值為:ResultSet.TYPE_FORWORD_ONLY:結(jié)果集的游標(biāo)只能向下滾動。ResultSet.TYPE_SCROLL_INSENSITIVE:結(jié)果集的游標(biāo)可以上下移動,當(dāng)數(shù)據(jù)庫變化時,當(dāng)前結(jié)果集不變。ResultSet.TYPE_SCROLL_SENSITIVE:返回可滾動的結(jié)果集,當(dāng)數(shù)據(jù)庫變化時,當(dāng)前結(jié)果集同步改變。
7.5案例:分頁查詢大型數(shù)據(jù)庫concurrency的取值決定是否可以用結(jié)果集更新數(shù)據(jù)庫,其取值為:ResultSet.CONCUR_READ_ONLY:不能用結(jié)果集更新數(shù)據(jù)庫中的表。ResultSet.CONCUR_UPDATETABLE:能用結(jié)果集更新數(shù)據(jù)庫中的表。
7.5案例:分頁查詢大型數(shù)據(jù)庫3.創(chuàng)建Web項(xiàng)目(1)打開MyEclipse,新建WebProject項(xiàng)目,項(xiàng)目名稱為Website。將JDBC驅(qū)動包放置在項(xiàng)目的WEB-INF/lib目錄下,在項(xiàng)目中導(dǎo)入MySQLJDBC驅(qū)動包。(2)新建Example7_8.jsp,實(shí)現(xiàn)記錄的分頁顯示功能。(3)打開瀏覽器,在地址欄中訪問http://localhost:8080/Website/Example7_8.jsp
本章總結(jié)本章首先介紹了JDBC技術(shù)以及使用JDBC連接數(shù)據(jù)庫的過程。然后介紹了使用JDBC對數(shù)據(jù)庫進(jìn)行查詢、增加、修改和刪除的操作。最后介紹了連接池技術(shù)。實(shí)踐與練習(xí)一、選擇題1.Web應(yīng)用程序需要訪問數(shù)據(jù)庫,數(shù)據(jù)庫驅(qū)動程序應(yīng)該安裝在()目錄中。A.文檔根目錄 B.WEB-INF\lib C.WEB-INF D.WEB-INF\classes2.()不是JDBC使用到的接口和類。A.System B.Class C.ConnectionD.ResultSet3.使用Connection接口的()方法可以建立一個PreparedStatement對象。A.createPrepareStatement() B.prepareStatement()C.createPreparedStatement()D.preparedStatement()實(shí)踐與練習(xí)4.下面關(guān)于PreparedStatement的說法錯誤的是()。A.PreparedStatement繼承了StatementB.PreparedStatement可以有效的防止SQL注入C.PreparedStatement不能用于批量更新的操作D.PreparedStatement可以存儲預(yù)編譯的Statement,從而提升執(zhí)行效率5.使用Class類的forName()加載驅(qū)動程序需要捕獲()異常。A.SQLException B.IOException C.ClassNotFoundException D.DBException實(shí)踐與練習(xí)6.在JDBC編程中執(zhí)行下列SQL語句“selectid,namefromemployee”,獲取結(jié)果集rs的第二列數(shù)據(jù)的代碼是()。A.rs.getString(1) B.rs.getString(name) C.rs.getString(2) D.rs.getString("id")7.下面描述中不屬于連接池的功能的是()。A.可以緩解連接頻繁的關(guān)閉和創(chuàng)建會造成系統(tǒng)性能的下降B.可以大幅度提高查詢語句的執(zhí)行效率C.可以限制客戶端的連接數(shù)量D.可以提高系統(tǒng)的伸縮性實(shí)踐與練習(xí)8.如果要創(chuàng)建帶參數(shù)的SQL查詢語句,應(yīng)該使用()對象。A.Statement B.PreparedStatement C.PrepareStatement D.CallableStatement9.在ResultSet對象中能將指針直接移動到第n條記錄的方法是()。A.absolute() B.previous() C.getStrin
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年甘肅武威民勤縣社會福利中心招聘鄉(xiāng)鎮(zhèn)敬老院工作人員12人備考題庫及完整答案詳解1套
- 2025甘肅蘭州市安寧區(qū)國企物業(yè)、后勤崗位招聘備考題庫及完整答案詳解
- 2026江蘇南京師范大學(xué)泰州學(xué)院招聘備考題庫及一套參考答案詳解
- 2025江蘇南京機(jī)電職業(yè)技術(shù)學(xué)院招聘高層次人才10人備考題庫及參考答案詳解1套
- 2026北京明天幼稚集團(tuán)招聘備考題庫及一套參考答案詳解
- 2026山東泰安市新泰市紫光實(shí)驗(yàn)中學(xué)招聘10人備考題庫帶答案詳解
- 2025江蘇南京大學(xué)集成電路學(xué)院特任副研究員招聘1人備考題庫有完整答案詳解
- 2025貴州安順市西秀區(qū)招聘公益性崗位人員17人備考題庫(含答案詳解)
- 2025年淄博博山區(qū)人民醫(yī)院勞務(wù)派遣制專業(yè)技術(shù)人員招聘備考題庫及完整答案詳解1套
- 2026廣東廣州市越秀區(qū)兒童福利會招聘1人備考題庫及參考答案詳解一套
- 頸椎間盤突出癥的治療和護(hù)理講課件
- 大學(xué)之道故事解讀
- 外立面改造項(xiàng)目腳手架施工專項(xiàng)方案
- 2023年全國職業(yè)院校技能大賽-生產(chǎn)事故應(yīng)急救援賽項(xiàng)規(guī)程
- 廣東省建筑工程混凝土結(jié)構(gòu)抗震性能設(shè)計(jì)規(guī)程
- 切削液回收及處理合同模板
- 2023年移動綜合網(wǎng)絡(luò)資源管理系統(tǒng)技術(shù)規(guī)范功能分冊
- 幼兒園大班班本課程-邂逅水墨課件
- 計(jì)算機(jī)輔助翻譯智慧樹知到期末考試答案章節(jié)答案2024年西華大學(xué)
- HGT 2520-2023 工業(yè)亞磷酸 (正式版)
- 閻良現(xiàn)代設(shè)施花卉產(chǎn)業(yè)園規(guī)劃設(shè)計(jì)方案
評論
0/150
提交評論