第11章JDBC數(shù)據(jù)庫(kù)編程-ok20151201_第1頁(yè)
第11章JDBC數(shù)據(jù)庫(kù)編程-ok20151201_第2頁(yè)
第11章JDBC數(shù)據(jù)庫(kù)編程-ok20151201_第3頁(yè)
第11章JDBC數(shù)據(jù)庫(kù)編程-ok20151201_第4頁(yè)
第11章JDBC數(shù)據(jù)庫(kù)編程-ok20151201_第5頁(yè)
已閱讀5頁(yè),還剩76頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第11章JDBC數(shù)據(jù)庫(kù)編程計(jì)算機(jī)科學(xué)與技術(shù)教研室龔平JDBC概述數(shù)據(jù)庫(kù)的連接數(shù)據(jù)庫(kù)操作應(yīng)用實(shí)例2本章主要內(nèi)容JDBCTMisaJavaTMAPIforexecutingSQLstatements.(Asapointofinterest,JDBCisatrademarkednameandisnotanacronym;nevertheless,JDBCisoftenthoughtofasstandingfor''JavaDatabaseConnectivity''.)

——摘自/docs/books/jdbc/intro.html11.1JDBC概述在JAVA技術(shù)系列中,訪問(wèn)數(shù)據(jù)庫(kù)的技術(shù)叫做JDBC,它提供了一系列的API。JDBCAPI是Java程序語(yǔ)言內(nèi)針對(duì)數(shù)據(jù)庫(kù)開(kāi)發(fā)提供的編程接口,它由一組類(lèi)和接口構(gòu)成,JDBCAPI使得開(kāi)發(fā)人員可以使用純Java的方式與關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行交互。4JDBCAPI基本功能包括:①指定JDBC驅(qū)動(dòng)程序類(lèi)型,并建立與指定數(shù)據(jù)庫(kù)的連接。②向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句并處理返回結(jié)果。③獲得所連接數(shù)據(jù)庫(kù)的各種信息,包括驅(qū)動(dòng)程序、數(shù)據(jù)庫(kù)、表、列的屬性等。有了JDBCAPI,就不必為訪問(wèn)MySQL數(shù)據(jù)庫(kù)專(zhuān)門(mén)寫(xiě)一個(gè)程序,為訪問(wèn)Oracle數(shù)據(jù)庫(kù)又專(zhuān)門(mén)寫(xiě)一個(gè)程序,為訪問(wèn)SQLServer數(shù)據(jù)庫(kù)又寫(xiě)另一個(gè)程序等。只須用JDBCAPI寫(xiě)一個(gè)程序就夠了,它可以向相應(yīng)數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句。11.1.1JDBC組件JDBC包含了4大組件:JDBCAPI、JDBCDriverManager、JDBCTestSuite、JDBC-ODBCBridge。71)JDBCAPIJDBCAPI提供了Java語(yǔ)言訪問(wèn)關(guān)系數(shù)據(jù)的程序代碼支持,使用JDBCAPI可以執(zhí)行SQL命令,獲取返回結(jié)果和數(shù)據(jù)庫(kù)事務(wù)操作。目前的JDBCAPI被分割在了java.sql和javax.sql包下。java.sql基本功能這個(gè)包中的類(lèi)和接口主要針對(duì)基本的數(shù)據(jù)庫(kù)編程服務(wù),如生成連接、執(zhí)行語(yǔ)句以及預(yù)處理語(yǔ)句和運(yùn)行批處理查詢等。同時(shí)也有一些高級(jí)的處理,比如批處理更新、事務(wù)隔離和可滾動(dòng)結(jié)果集等。9java.sql常用類(lèi)和接口DriverManager類(lèi)DriverConnectionStatementPreparedStatementCallableStatementResultSetResultSetMetaDatajavax.sql擴(kuò)展功能它主要為數(shù)據(jù)庫(kù)方面的高級(jí)操作提供了接口和類(lèi)。如為連接管理、分布式事務(wù)和舊的連接提供了更好的抽象,它引入了容器管理的連接池、分布式事務(wù)和行集(RowSet)等。112)JDBC驅(qū)動(dòng)管理器(JDBCDriverManager)JDBC驅(qū)動(dòng)管理器是JDBCAPI定義了能夠通過(guò)JDBC連接到數(shù)據(jù)庫(kù)的一系列對(duì)象。它與實(shí)際連接到數(shù)據(jù)庫(kù)的第三方驅(qū)動(dòng)進(jìn)行通信,并返回查詢的信息,或是執(zhí)行由該SQL規(guī)定的操作。3)JDBCTestSuiteJDBC驅(qū)動(dòng)程序測(cè)試套件幫助程序員確定JDBC驅(qū)動(dòng)程序?qū)⑦\(yùn)行的程序。4)JDBC-ODBCBridgeJDBC-ODBCBridge使得Java程序通過(guò)ODBC橋提供的JDBC驅(qū)動(dòng)程序訪問(wèn)關(guān)系型數(shù)據(jù)。//JDK8不再提供JDBC-ODBCBridge1211.1.2JDBC架構(gòu)JDBCAPI通常提供“兩層”和“三層”兩種模型來(lái)訪問(wèn)數(shù)據(jù)庫(kù):1)兩層模型13在兩層模型中,Java程序直接與數(shù)據(jù)庫(kù)進(jìn)行對(duì)話。這將需要一個(gè)JDBC驅(qū)動(dòng)程序來(lái)與所訪問(wèn)的特定數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行通信。程序中的SQL語(yǔ)句被送往數(shù)據(jù)庫(kù)中,其結(jié)果將被返回給程序。2)三層模型14在三層模型中,命令先是被發(fā)送到中間層,然后由中間層將SQL語(yǔ)句發(fā)送給數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)對(duì)SQL語(yǔ)句進(jìn)行處理并將結(jié)果返回到中間層,中間層再將結(jié)果返回給用戶。Java應(yīng)用程序進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)一般遵循下列幾個(gè)步驟:注冊(cè)(加載)JDBC驅(qū)動(dòng)程序;建立到數(shù)據(jù)庫(kù)的連接;創(chuàng)建SQL語(yǔ)句對(duì)象;發(fā)送SQL語(yǔ)句;處理返回結(jié)果;從數(shù)據(jù)庫(kù)斷開(kāi)連接;11.2數(shù)據(jù)庫(kù)的連接在連接數(shù)據(jù)庫(kù)前,首先必須下載數(shù)據(jù)庫(kù)對(duì)應(yīng)的JDBC驅(qū)動(dòng)程序。不同的數(shù)據(jù)庫(kù)廠商提供有不同的JDBC驅(qū)動(dòng)。16SQLServerMySQLoracle下載相應(yīng)的數(shù)據(jù)庫(kù)針對(duì)Java的驅(qū)動(dòng)后,(解壓)找到具體的.jar文件,添加到Java項(xiàng)目中。SQLServerMySQL

加載JDBC驅(qū)動(dòng)try{Class.forName(“驅(qū)動(dòng)包.類(lèi)")}catch(Exceptione){}SQLServer:com.microsoft.sqlserver.jdbc.SQLServerDriverMySQL:com.mysql.jdbc.Driver或org.git.mm.mysql.DriverOracle:oracle.jdbc.driver.OracleDriver結(jié)合實(shí)際的JAR包來(lái)寫(xiě)建立連接Connection的對(duì)象代表與數(shù)據(jù)庫(kù)的連接。一個(gè)應(yīng)用程序可與單個(gè)數(shù)據(jù)庫(kù)有一個(gè)或多個(gè)連接,也可與許多數(shù)據(jù)庫(kù)有連接。在連接的過(guò)程中需要用DriverManager類(lèi)來(lái)處理驅(qū)動(dòng)的調(diào)入并且對(duì)產(chǎn)生新的數(shù)據(jù)庫(kù)連接提供支持。多數(shù)情況下,讓DriverManager類(lèi)管理建立連接的細(xì)節(jié)為上策。其中,DriverManager類(lèi)中的getConnection方法有下邊3種定義:publicstaticConnectiongetConnection(String

url,Properties

info)throwsSQLExceptionpublicstaticConnectiongetConnection(String

url,String

user,String

password)throwsSQLExceptionpublicstaticConnectiongetConnection(String

url)throwsSQLException

如何創(chuàng)建Connection的對(duì)象url參數(shù)的格式:jdbc:<subprotocol>:<subname>參數(shù)url具體寫(xiě)法:MySQL:jdbc:mysql://localhost:端口/數(shù)據(jù)庫(kù)名Oracle:jdbc:oracle:thin:@主機(jī)host:端口號(hào):數(shù)據(jù)庫(kù)名SQLServer:jdbc:sqlserver://localhost:1433;DatabaseName=test24連接SQLServer2005/2008:Stringurl="jdbc:sqlserver://localhost:1433;DatabaseName=test";Connectioncon=DriverManager.getConnection(url,”sa”,”asdf”);操作演示:連接SQLServer11.3數(shù)據(jù)庫(kù)操作利用JDBCAPI對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作(數(shù)據(jù)查詢、數(shù)據(jù)新增、數(shù)據(jù)修改、數(shù)據(jù)刪除等)。對(duì)數(shù)據(jù)庫(kù)的操作主要會(huì)涉及到幾個(gè)類(lèi)和接口:Connection、Statement、PreparedStatement、CallableStatement、ResultSet等。26Statement的對(duì)象用于將SQL語(yǔ)句發(fā)送到數(shù)據(jù)庫(kù)中。實(shí)際上有三種Statement:

StatementPreparedStatement(它從Statement繼承而來(lái))和CallableStatement(它從PreparedStatement繼承而來(lái))創(chuàng)建SQL語(yǔ)句對(duì)象做法1通過(guò)Connection接口的下列方法創(chuàng)建Statement接口的對(duì)象Statement

createStatement()throwsSQLExceptionStatement

createStatement(int

resultSetType,int

resultSetConcurrency)throwsSQLExceptionresultSetType

結(jié)果集的方式。值可以?。篟esultSet.TYPE_FORWARD_ONLY

結(jié)果集游標(biāo)只能向前滾動(dòng)。ResultSet.TYPE_SCROLL_INSENSITIVE

結(jié)果集的游標(biāo)可以上下移動(dòng),當(dāng)數(shù)據(jù)庫(kù)變化時(shí),當(dāng)前結(jié)果集不變。ResultSet.TYPE_SCROLL_SENSITIVE結(jié)果集的游標(biāo)可以上下移動(dòng),當(dāng)數(shù)據(jù)庫(kù)變化時(shí),當(dāng)前結(jié)果集同步改變。resultSetConcurrency

設(shè)定當(dāng)前結(jié)果集與數(shù)據(jù)庫(kù)的關(guān)系。值可以?。篟esultSet.CONCUR_READ_ONLY

只讀,即不能用結(jié)果集更新數(shù)據(jù)庫(kù)中的表。ResultSet.CONCUR_UPDATABLE

可更新的,即可以用結(jié)果集更新數(shù)據(jù)庫(kù)中的表。通過(guò)Connection接口的下列方法創(chuàng)建PreparedStatement接口的對(duì)象PreparedStatement

prepareStatement(String

sql)throwsSQLExceptionPreparedStatement

prepareStatement(String

sql,int

resultSetType,int

resultSetConcurrency)throwsSQLExceptionCallableStatement

prepareCall(String

sql)throwsSQLException創(chuàng)建SQL語(yǔ)句對(duì)象做法2使用Statement接口提供的方法:ResultSet

executeQuery(String

sql)throwsSQLExceptionint

executeUpdate(String

sql)throwsSQLExceptionboolean

execute(String

sql)throwsSQLException代碼清單11-2發(fā)送SQL命令做法1使用PreparedStatement提供的方法ResultSetexecuteQuery()intexecuteUpdate()booleanexecute()31代碼清單11-3發(fā)送SQL命令做法2當(dāng)向數(shù)據(jù)庫(kù)發(fā)送一個(gè)SQL語(yǔ)句,數(shù)據(jù)庫(kù)中的SQL解釋器負(fù)責(zé)把SQL語(yǔ)句生成底層的內(nèi)部命令,然后執(zhí)行。如果不斷的發(fā)送SQL語(yǔ)句,勢(shì)必增加數(shù)據(jù)庫(kù)中SQL解釋器的負(fù)擔(dān),影響執(zhí)行的速度。能不能事先就將SQL語(yǔ)句解釋為底層的內(nèi)部命令,然后再發(fā)送到數(shù)據(jù)庫(kù)直接執(zhí)行呢?

PreparedStatement接口答案是肯定的。Java提供了更高效率的數(shù)據(jù)庫(kù)操作機(jī)制,就是PreparedStatement接口,它的對(duì)象被習(xí)慣地稱(chēng)作預(yù)處理語(yǔ)句對(duì)象。

在對(duì)SQL進(jìn)行預(yù)處理時(shí),可以使用通配符“?”來(lái)代替字段的值,并在預(yù)處理語(yǔ)句執(zhí)行之前對(duì)通配符所表示的內(nèi)容進(jìn)行具體值的設(shè)定。如:

PreparedStatementpre=con.prepareStatement(“select*fromscorewheremaths<?”);pre.setInt(1,60);//1表示出現(xiàn)的第一個(gè)通配符

預(yù)處理設(shè)置通配符值的常用方法:voidsetDate(intindex,Datex)voidsetDouble(intindex,doublex)voidsetFloat(intindex,floatx)voidsetInt(intindex,intx)voidsetLong(intindex,longx)voidsetString(intindex,Stringx)預(yù)處理語(yǔ)句具有兩個(gè)主要的優(yōu)點(diǎn):只需要被解析(或準(zhǔn)備)一次,可以使用相同或不同的參數(shù)(針對(duì)通配符?)執(zhí)行多次。傳給預(yù)處理語(yǔ)句的參數(shù)不需要使用引號(hào),底層驅(qū)動(dòng)會(huì)處理這個(gè)。11.3.6數(shù)據(jù)庫(kù)SQL操作數(shù)據(jù)庫(kù)基本操作包括查詢、刪除、插入、更新等,主要涉及Statement接口、PreparedStatement接口、ResultSet接口等的操作。37(1)數(shù)據(jù)查詢數(shù)據(jù)查詢分為一般查詢、帶參數(shù)的查詢,一般查詢使用Statement接口,帶參數(shù)的查詢使用PreparedStatement接口。例如:一般查詢:Stringsql="SELECT*FROMt_userWHEREage>20";帶參數(shù)的查詢:Stringsql="SELECT*FROMt_userWHEREage>?";條件查詢select字段列表/*from表名where條件排序查詢select字段列表/*from表名orderby字段asc/desc模糊查詢select字段列表/*from表名where字段like‘%xxx%’統(tǒng)計(jì)查詢selectcount(字段/*)from表名等等。具體請(qǐng)參照SQL命令。向數(shù)據(jù)庫(kù)發(fā)送查詢命令,返回查詢結(jié)果集Statementst=con.createStatement();ResultSetrs=st.executeQuery(sql);或者,PreparedStatementps=con.createStatement(sql);ResultSetrs=ps.executeQuery();ResultSet的對(duì)象所包含的結(jié)果集中往往有多條記錄,形式如下圖所示:Stringsql="selectuserID,usrname,age,genderfromt_userwheregender='女'";ResultSetrs=st.executeQuery(sql);booleanabsolute(int

row)booleanfirst()booleanlast()booleanrelative(int

rows)booleanprevious()booleannext()intgetInt(String

columnName)intgetInt(int

columnIndex)StringgetString(int

columnIndex)StringgetString(String

columnName)ResultSet接口常用的方法如何處理查詢的返回結(jié)果?

處理返回結(jié)果——查詢

a.獲取結(jié)果集中的列名、類(lèi)型ResultMetaDatarsmd=rs.getMetaData();intcc=rsmd.getColumnCount();for(inti=1;i<=cc;i++)System.out.println(rsmd.getColumnName(i)+””+rsmd.getColumnTypeName(i));b.對(duì)結(jié)果集中的數(shù)據(jù)進(jìn)行輸出while(rs.next()){id=rs.getInt(1);name=rs.getString(2);account=rs.getString(3);password=rs.getString(4);System.out.println(id+””+name+””+account+””+password);}最初游標(biāo)的位置在第1條記錄之前。默認(rèn)情況下,只能對(duì)結(jié)果集執(zhí)行讀操作,不允許更改結(jié)果集的內(nèi)容。查詢結(jié)果集通常會(huì)含有多條記錄,可以通過(guò)循環(huán)逐行操作,如下所示:默認(rèn)情況下,游標(biāo)只能“從前往后”移動(dòng)。方向性:Forward1→2→3→4→…執(zhí)行rs.next()執(zhí)行rs.next()記錄非空,返回true記錄非空,返回true執(zhí)行rs.next()記錄為空,返回false值得注意的是,即使在創(chuàng)建Statement或PreparedStatement時(shí)把參數(shù)設(shè)置為游標(biāo)可滾動(dòng)的和結(jié)果集可更新,實(shí)際得到的結(jié)果集仍然有可能不允許滾動(dòng)或更新。有以下兩方面的原因:底層JDBC驅(qū)動(dòng)器有可能不支持可滾動(dòng)或可更新。某些查詢語(yǔ)句的結(jié)果集不允許更新。例如,JDBC規(guī)范規(guī)定,只有對(duì)一張表查詢,并且查詢字段包含表中的主鍵,這樣的查詢語(yǔ)句的結(jié)果集才能夠被更新。補(bǔ)充演示案例:查詢(2)數(shù)據(jù)插入數(shù)據(jù)插入可以有兩種方法,一種是通過(guò)發(fā)送SQL方式進(jìn)行插入,另外一種就是通過(guò)結(jié)果集進(jìn)行插入。1)發(fā)送SQL方式進(jìn)行插入在SQL語(yǔ)句中使用insert語(yǔ)句,并通過(guò)Statement的executeUpdate方法發(fā)送SQL語(yǔ)句實(shí)現(xiàn)插入,如:Stringsql="INSERTINTOcustomer(cName,cAge,cAddress,cEmail)values('MikeJoden',45,'NewYorkThreeStreet','mjoden@135.net')";st.executeUpdate(sql);51也可使用PreparedStatement的executeUpdate方法實(shí)現(xiàn),如:StringsqlStr="insertintoAdmin(name,account,password,role_type)values(?,?,?,?)";PreparedStatementps=con.prepareStatement(sqlStr);ps.setString(1,"fang");ps.setString(2,"lucy");ps.setString(3,"lucy");ps.setInt(4,0);intcount=ps.executeUpdate();if(count>0){//處理返回結(jié)果System.out.println("插入成功");}52(3)數(shù)據(jù)更改數(shù)據(jù)更改即記錄的更改,有兩種方式:發(fā)送SQL方式和ResultSet結(jié)果集方式。1)發(fā)送SQL方式更改在sql語(yǔ)句中使用update語(yǔ)句,并通過(guò)Statement中的executeUpdate方法實(shí)現(xiàn)插入,如:st.executeUpdate(“updateAdminsetname=’wf’whereid=7");53或者使用PreparedStatement通過(guò)帶參數(shù)的sql語(yǔ)句進(jìn)行更改,如:StringsqlStr="updateAdminsetname=?whereid=?";PreparedStatementps=con.prepareStatement(sqlStr);ps.setString(1,"wf");ps.setInt(2,"7");intcount=ps.executeUpdate();if(count>0){//處理返回結(jié)果System.out.println("更新成功");}54(4)數(shù)據(jù)刪除數(shù)據(jù)刪除即對(duì)數(shù)據(jù)表中的某些記錄進(jìn)行刪除,同樣它有兩種方式操作,發(fā)送SQL方式和結(jié)果集方式1)發(fā)送SQL方式方式刪除在sql語(yǔ)句中使用delete語(yǔ)句,并通過(guò)Statement中的executeUpdate方法實(shí)現(xiàn)刪除,如:st.executeUpdate(“deletefromAdminwherename=’wf’);55或者使用PreparedStatement通過(guò)帶參數(shù)的sql語(yǔ)句進(jìn)行更改,如:StringsqlStr="deletefromAdminwherename=?";PreparedStatementps=con.prepareStatement(sqlStr);ps.setString(1,"wf");intcount=ps.executeUpdate();if(count>0){System.out.println("刪除成功");}56

從數(shù)據(jù)庫(kù)斷開(kāi)連接try{…}catch(Exceptione){}finally{

try{

if(con!=null)con.close();}catch(Exceptionee){}}加載驅(qū)動(dòng)程序Class.forName(…);創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象Connectioncon=xxx.getConnection(…);創(chuàng)建Statement對(duì)象Statementst=con.createStatement();向數(shù)據(jù)庫(kù)發(fā)送SQL命令Stringsql=“select……”;//查詢ResultSetrs=st.executeQuery(sql);Stringsql=“delete……”;//增刪改intn=st.executeUpdate(sql);處理返回結(jié)果(1)查詢,處理rs

(2)增刪改,處理n關(guān)閉與數(shù)據(jù)庫(kù)的連接con.close();11.4應(yīng)用實(shí)例59數(shù)據(jù)庫(kù)名info,t_user表如下:通過(guò)ResultSet的對(duì)象插入、刪除、修改數(shù)據(jù)課后自習(xí)voidmoveToInsertRow()throwsSQLException

voidupdateInt(intcolumnIndex,intx)throwsSQLExceptionvoidupdateInt(StringcolumnLabel,intx)throwsSQLExceptionvoidupdateString(intcolumnIndex,Stringx)throwsSQLExceptionvoidupdateString(StringcolumnLabel,Stringx)throwsSQLExceptionvoidupdateRow()throwsSQLExceptionvoiddeleteRow()throwsSQLExceptionvoidinsertRow()throwsSQLExceptionResultSet接口常用的方法1.數(shù)據(jù)插入當(dāng)通過(guò)Statement對(duì)象或者是PreparedStatement對(duì)象使用select的sql語(yǔ)句獲得了結(jié)果集之后,就可以利用現(xiàn)有的結(jié)果集進(jìn)行插入操作。具體做法:rs.absolute(n);//先定位”游標(biāo)”到某行的位置,或省略直接利用當(dāng)前行rs.moveToInsertRow();//將這個(gè)位置作為插入行的位置rs.updateXXX(…,…);//對(duì)“不允許為空”的列賦值,如rs.updateString(2,”曬太陽(yáng)的貓”);rs.updateXXX(…,…);//對(duì)“不允許為空”的列賦值,如rs.updateInt(3,22);……rs.insertRow();//執(zhí)行插入行操作67代碼清單11-4結(jié)果集更新在創(chuàng)建Statement對(duì)象或者是PreparedStatement對(duì)象的時(shí)候必須指明結(jié)果集可更新,否則會(huì)報(bào)出異常。得到一個(gè)結(jié)果集之后,可以將游標(biāo)移動(dòng)到制定的行,然后使用updateXXX()方法更新該列的數(shù)據(jù),最后使用updateRow()提交更新的數(shù)據(jù),同步更改數(shù)據(jù)庫(kù)。68代碼清單11-52.數(shù)據(jù)修改首先根據(jù)sqlStr查詢條件獲得ResultSet對(duì)象,然后將游標(biāo)移到對(duì)應(yīng)行,最后執(zhí)行deleteRow()方法,即可實(shí)現(xiàn)數(shù)據(jù)的刪除。StringsqlStr="select*fromAdminwhereid=6";PreparedStatementps=con.prepareStatement(sqlStr,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSetrs=ps.executeQuery();rs.next();rs.deleteRow();con.close();693.數(shù)據(jù)刪除對(duì)數(shù)據(jù)表的操作(創(chuàng)建表、刪除表、增加表中的列、刪除表中的列)課后自習(xí)常常在程序中也需要對(duì)數(shù)據(jù)庫(kù)或者是數(shù)據(jù)表進(jìn)行操作,如

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論