第9章Java數(shù)據(jù)庫(kù)技術(shù)_第1頁(yè)
第9章Java數(shù)據(jù)庫(kù)技術(shù)_第2頁(yè)
第9章Java數(shù)據(jù)庫(kù)技術(shù)_第3頁(yè)
第9章Java數(shù)據(jù)庫(kù)技術(shù)_第4頁(yè)
第9章Java數(shù)據(jù)庫(kù)技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩44頁(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)介

1、第9章 Java數(shù)據(jù)庫(kù)技術(shù) 9.1 JDBC概述概述9.2 使用使用JDBC 9.3 實(shí)例實(shí)例 習(xí)習(xí) 題題 9.1 JDBC概述概述 JDBC(Java Database Connection,Java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的JavaAPI(應(yīng)用程序設(shè)計(jì)接口),它由一些Java語(yǔ)言寫的類和界面組成。JDBC提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,使得開(kāi)發(fā)人員使用Java語(yǔ)言開(kāi)發(fā)完整的數(shù)據(jù)庫(kù)應(yīng)用程序變得極為簡(jiǎn)單。通過(guò)JDBC,開(kāi)發(fā)人員幾乎可以將SQL語(yǔ)句傳遞給任何一種數(shù)據(jù)庫(kù),而無(wú)需為各種數(shù)據(jù)庫(kù)編寫單獨(dú)的訪問(wèn)程序。JDBC可以自動(dòng)將SQL語(yǔ)句傳遞給相應(yīng)的數(shù)據(jù)庫(kù)管理系統(tǒng)。 JDBC擴(kuò)展了Ja

2、va的功能,例如在Applet中應(yīng)用JDBC,可以實(shí)現(xiàn)與遠(yuǎn)程數(shù)據(jù)庫(kù)的連接,實(shí)現(xiàn)不同平臺(tái)數(shù)據(jù)庫(kù)之間的對(duì)話。簡(jiǎn)單地說(shuō),JDBC完成下面三個(gè)操作: (1) 與一個(gè)數(shù)據(jù)庫(kù)建立連接。 Connection con = DriverManager.getConnection(jdbc:odbc:CallCenter,sa,); (2) 向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句。 stmt = con.createStatement();rs = stmt.executeQuery(SELECT CID,CPin from tCustomer WHERE CID=z1); (3) 處理數(shù)據(jù)庫(kù)返回的結(jié)果。while(rs.ne

3、xt()String theInt = rs.getString(CID);String str = rs.getString(CPin); .9.2 使使 用用JDBC JDBC的接口分為兩個(gè)層次:一個(gè)是面向程序開(kāi)發(fā)人員的JDBC API;另外一個(gè)是底層的JDBC Driver API。JDBC API 被描述成為一組抽象的Java接口,應(yīng)用程序可以對(duì)某個(gè)數(shù)據(jù)庫(kù)打開(kāi)連接,執(zhí)行SQL語(yǔ)句并且處理結(jié)果。最重要的接口如下: java.sql.DriverManager:處理驅(qū)動(dòng)的調(diào)入并且對(duì)產(chǎn)生新的數(shù)據(jù)庫(kù)連接提供支持。 java.sql.Connection:代表對(duì)特定數(shù)據(jù)庫(kù)的連接。 java.sq

4、l.Statement:代表一個(gè)特定的容器,以對(duì)一個(gè)特定的數(shù)據(jù)庫(kù)執(zhí)行SQL語(yǔ)句。 java.sql.ResultSet:控制對(duì)一個(gè)特定語(yǔ)句的行數(shù)據(jù)的存取。 其中java.sql.Statement又有兩個(gè)子類型: (1) java.sql.PreparedStatement:用于執(zhí)行預(yù)編譯的SQL語(yǔ)句。 (2) java.sql.CallableStatement:用于執(zhí)行對(duì)一個(gè)數(shù)據(jù)庫(kù)內(nèi)嵌過(guò)程的調(diào)用。 JDBC Driver API是指java.sql.Driver接口,封裝了不同數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序(像Access、Foxpro、SQL Server等)。由于它是數(shù)據(jù)庫(kù)底層處理,所以必須提供對(duì)j

5、ava.sql.Connection、java.sql. Statement、java.sql.PreparedStatement和java.sql.ResultSet的實(shí)現(xiàn)。 如果目標(biāo)DBMS提供有OUT參數(shù)的內(nèi)嵌過(guò)程,那么還必須提供java.sql.CallableStatement 接口。在java.sql.Driver接口中每個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序必須提供一個(gè)類,使得系統(tǒng)可以由 java.sql.DriverManager來(lái)管理。一個(gè)比較好用的驅(qū)動(dòng)程序是在ODBC之上提供對(duì)JDBC的實(shí)現(xiàn),從而提供與ODBC接口的JDBC-ODBC 橋。所謂JDBC-ODBC橋,是一個(gè)JDBC驅(qū)動(dòng)程序,通過(guò)將

6、JDBC操作轉(zhuǎn)換為ODBC操作來(lái)實(shí)現(xiàn)JDBC操作。它由sun.jdbc.odbc包實(shí)現(xiàn),包含一個(gè)用來(lái)訪問(wèn)ODBC的本地庫(kù),對(duì)所有ODBC可用的數(shù)據(jù)庫(kù)實(shí)現(xiàn)JDBC。 通過(guò)ODBC子協(xié)議,可以使用下面一行代碼進(jìn)行顯示加載。 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); 加載時(shí),ODBC驅(qū)動(dòng)程序?qū)?chuàng)建自己的實(shí)例,同時(shí)在JDBC驅(qū)動(dòng)程序管理器中進(jìn)行注冊(cè)。由于JDBC放在ODBC之后,所以實(shí)現(xiàn)起來(lái)簡(jiǎn)單且高效。9.2.1 Driver Driver接口是每個(gè)驅(qū)動(dòng)器類都需要完成的。JavaSQL框架允許有多個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)器,每個(gè)驅(qū)動(dòng)器應(yīng)該提供一個(gè)類來(lái)實(shí)現(xiàn)驅(qū)動(dòng)器接口,

7、而驅(qū)動(dòng)器的裝載通過(guò)DriverManager實(shí)例實(shí)現(xiàn)。 DriverManager將裝載盡量多的驅(qū)動(dòng)器,對(duì)每個(gè)給定的連接請(qǐng)求,將所有的驅(qū)動(dòng)器依次連接到目標(biāo)數(shù)據(jù)庫(kù)上。當(dāng)驅(qū)動(dòng)器類裝載后,Driver應(yīng)該創(chuàng)建一個(gè)實(shí)例,然后注冊(cè)到DriverManager上。9.2.2 DriverManager DriverManager管理一系列JDBC驅(qū)動(dòng)器的基本服務(wù)。應(yīng)用程序可以顯式加載JDBC驅(qū)動(dòng)器。例如下面代碼顯式加載my.sql.Driver。 Class.forName(my.sql.Driver); 顯式加載JDBC-ODBC橋: Class.forName(sun.jdbc.odbc.JdbcOd

8、bcDriver);它的較為重要的方法有: public static Connection getConnection(String url) throws SQLException public static Connection getConnection(String url, Properties info) throws SQLException public static Connection getConnection(String url, String user, String password) throws SQLException 這些方法的功能都是建立一個(gè)到給定數(shù)據(jù)

9、庫(kù)url的連接。DriverManager試圖從注冊(cè)的JDBC驅(qū)動(dòng)器序列中選擇合適的驅(qū)動(dòng)器,返回到url的連接。 其中: (1) url為數(shù)據(jù)庫(kù)url,格式為 jdbc:subprotocol:subname。 (2) info以“標(biāo)記/數(shù)值對(duì)”作為連接參數(shù),至少應(yīng)該包括user和password屬性對(duì)。 (3) user指數(shù)據(jù)庫(kù)用戶(連接以什么身份建立)。 (4) password 是用戶的密碼。 例如:使用JDBC-ODBC橋建立到ODBC配置的數(shù)據(jù)庫(kù)CallCenter的連接,訪問(wèn)CallCenter數(shù)據(jù)庫(kù)的用戶名為sa,密碼無(wú)。語(yǔ)句行如下:Connection con = Driver

10、Manager.getConnection(jdbc:odbc:CallCenter,sa,); 9.2.3 Connection 一個(gè)Connection(連接)就是一個(gè)與特定數(shù)據(jù)庫(kù)的會(huì)話。在連接的上下文環(huán)境中才可以執(zhí)行SQL語(yǔ)句和返回結(jié)果。Connection對(duì)象的數(shù)據(jù)庫(kù)可以提供描述它的表、SQL語(yǔ)法和存儲(chǔ)過(guò)程等的信息。它較為重要的方法有: public Statement createStatement() throws SQLException 創(chuàng)建一個(gè)Statement對(duì)象,用于發(fā)送SQL語(yǔ)句到數(shù)據(jù)庫(kù)。沒(méi)有參數(shù)的SQL語(yǔ)句通常使用Statement對(duì)象執(zhí)行。如果希望多次執(zhí)行,使用Pr

11、eparedStatement更為高效。 public PreparedStatement prepareStatement(String sql) throws SQLException 創(chuàng)建一個(gè)PreparedStatement對(duì)象,發(fā)送參數(shù)化SQL語(yǔ)句sql到數(shù)據(jù)庫(kù)。 SQL語(yǔ)句可以預(yù)先編譯并存儲(chǔ)到PreparedStatement語(yǔ)句中。這個(gè)對(duì)象可以用來(lái)高效地多次執(zhí)行語(yǔ)句。 其中:參數(shù)sql是包含多個(gè)“?”參數(shù)的SQL語(yǔ)句,“?”表示輸入?yún)?shù)由用戶進(jìn)行設(shè)置。 例如: 創(chuàng)建Statement對(duì)象語(yǔ)句如下: stmt = con.createStatement(); 創(chuàng)建PreparedS

12、tatement對(duì)象語(yǔ)句如下: pstmt = con.prepareStatement(UPDATE Xuesheng SET 班級(jí) = ? WHERE 班級(jí) = ?);9.2.4 Statement Statement對(duì)象用于執(zhí)行一個(gè)靜態(tài)的SQL語(yǔ)句并返回它產(chǎn)生的結(jié)果。在缺省情況下,任一時(shí)刻每個(gè)Statement對(duì)象只產(chǎn)生一個(gè)ResultSet集。對(duì)數(shù)據(jù)庫(kù)希望有不同操作得到結(jié)果集時(shí),需要?jiǎng)?chuàng)建不同的Statement對(duì)象。它的較為重要的方法有: public ResultSet executeQuery(String sql) throws SQLException 執(zhí)行給定的sql語(yǔ)句,返

13、回一個(gè)ResultSet對(duì)象。 public int executeUpdate(String sql) throws SQLException 執(zhí)行給定的sql語(yǔ)句,可以是插入(INSERT)、更新(UPDATE)或者刪除(DELETE)等,也可以是一個(gè)空語(yǔ)句,執(zhí)行DDL語(yǔ)句。返回值是操作的記錄個(gè)數(shù)。 public ResultSet getResultSet() throws SQLException 以ResultSet對(duì)象格式返回當(dāng)前結(jié)果集,每個(gè)結(jié)果集只調(diào)用一次。 例如: 從表tCustomer中返回CID為z1的記錄的CID(客戶ID)和CPin(密碼)列,語(yǔ)句行為:rs = stm

14、t.executeQuery(SELECT CID,CPin from tCustomer WHERE CID= z1 );9.2.5 PreparedStatement PreparedStatement代表預(yù)編譯的SQL語(yǔ)句的對(duì)象。一個(gè)SQL語(yǔ)句預(yù)編譯后存儲(chǔ)到PreparedStatement對(duì)象中,這個(gè)對(duì)象用來(lái)多次執(zhí)行語(yǔ)句。PreparedStatement繼承于Statement,擴(kuò)展了Statement的用途,提高了Statement的執(zhí)行效率。它與Statement對(duì)象有兩點(diǎn)不同:(1) 同一個(gè)對(duì)象可以多次使用。(2) 它的SQL語(yǔ)句可以帶輸入(IN)參數(shù)。 PreparedSta

15、tement在程序語(yǔ)句中的輸入?yún)?shù)使用占位符“?”來(lái)實(shí)現(xiàn)。必須使用類提供的設(shè)置方法設(shè)置語(yǔ)句中占位符的具體值,才能執(zhí)行語(yǔ)句。如下面的程序段,根據(jù)ID的取值更新EMPLOYEES表中SALARY字段的取值,將第一個(gè)占位符代表的參數(shù)設(shè)置為10000.00,將第二個(gè)占位符代表的參數(shù)設(shè)置為111,語(yǔ)句執(zhí)行的結(jié)果是EMPLOYEES表中ID為111的記錄的SALARY取值為10000.00。 PreparedStatement pstmt = con.prepareStatement(UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?); pstmt.setBigDe

16、cimal(1, 10000.00) pstmt.setInt(2, 111); pstmt.executeUpdate(); 類PreparedStatement提供的常用方法如下: public boolean execute() throws SQLException 執(zhí)行PreparedStatement對(duì)象中的任一類型的SQL語(yǔ)句。如果返回true,則調(diào)用getResultSet方法取得ResultSet集;如果返回false,則調(diào)用getUpdateCount方法獲得更新數(shù)。 public ResultSet executeQuery() throws SQLException 執(zhí)

17、行SQL查詢,并返回查詢產(chǎn)生的結(jié)果集。 public int executeUpdate() throws SQLException 執(zhí)行對(duì)象中的SQL語(yǔ)句。如果是一些更新操作,如插入(INSERT)、修改(UPDATE)和刪除(DELETE )等,則返回操作的個(gè)數(shù)。常用的設(shè)置方法為:public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException 在第parameterIndex位置設(shè)置BigDecimal型x。public void setBoolean(int parameterIndex, b

18、oolean x) throws SQLException 在第parameterIndex位置設(shè)置布爾型x。public void setByte(int parameterIndex, byte x) throws SQLException在第parameterIndex位置設(shè)置字節(jié)型x。public void setBytes(int parameterIndex, byte x) throws SQLException在第parameterIndex位置設(shè)置字節(jié)數(shù)組型x。public void setDouble(int parameterIndex, double x) throws

19、 SQLException在第parameterIndex位置設(shè)置雙精度型x。public void setFloat(int parameterIndex, float x) throws SQLException 在第parameterIndex位置設(shè)置單精度型x。public void setInt(int parameterIndex, int x) throws SQLException 在第parameterIndex位置設(shè)置整型x。public void setLong(int parameterIndex, long x) throws SQLException在第parame

20、terIndex位置設(shè)置長(zhǎng)整型x。public void setNull(int parameterIndex, int sqlType) throws SQLException 在第parameterIndex位置設(shè)置為空x。public void setObject(int parameterIndex, Object x) throws SQLException 在第parameterIndex位置設(shè)置對(duì)象x。public void setShort(int parameterIndex, short x) throws SQLException 在第parameterIndex位置設(shè)置

21、短整型x。void setString(int parameterIndex, String x) throws SQLException 在第parameterIndex位置設(shè)置字符串型x。public void setTime(int parameterIndex, Time x) throws SQLException 在第parameterIndex位置設(shè)置時(shí)間型x。public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException在第parameterIndex位置設(shè)置時(shí)間戳型x。9.2.6 Re

22、sultSet Result對(duì)象是指一張數(shù)據(jù)表,代表數(shù)據(jù)庫(kù)結(jié)果集,通常是通過(guò)執(zhí)行查詢數(shù)據(jù)庫(kù)的語(yǔ)句而產(chǎn)生的。ResultSet對(duì)象持有一個(gè)游標(biāo),該游標(biāo)指向當(dāng)前數(shù)據(jù)行。初始化時(shí)游標(biāo)定位到第一行之前。Next方法將游標(biāo)移動(dòng)到下一行,當(dāng)對(duì)象行完時(shí),返回錯(cuò)誤。通常使用循環(huán)來(lái)完成每行的遍歷。 public boolean next() throws SQLException 讀行,返回true;行數(shù)完,則返回false。 例如,下面程序段完成對(duì)結(jié)果集的操作,對(duì)所有記錄進(jìn)行遍歷并輸出其中的字段CID和CPin的值。while(rs.next()String theInt = rs.getString(CID

23、);String str = rs.getString(CPin);System.out.println(CID: +theInt+ CPin: +str); 結(jié)果集有一些方法用于對(duì)返回結(jié)果的具體字段進(jìn)行讀取,包括以字段編號(hào)為參數(shù)和以字段名稱為參數(shù)的讀取,其中以字段編號(hào)為參數(shù)的讀取速度快一些,而以字段名稱為參數(shù)的讀取對(duì)用戶來(lái)說(shuō)更加方便。 所謂字段編號(hào)是指當(dāng)前結(jié)果集中的第一個(gè)列字段編號(hào)為1,然后依次加1對(duì)剩余列進(jìn)行編號(hào);而字段名稱是指列標(biāo)題的名字。Get字段的類型同上述Set字段的類型一致。下面是以字段編號(hào)為參數(shù)的讀取方法:public BigDecimal getBigDecimal(int

24、columnIndex) throws SQLException public boolean getBoolean(int columnIndex) throws SQLException public byte getByte(int columnIndex) throws SQLExceptionpublic byte getBytes(int columnIndex) throws SQLExceptionpublic double getDouble(int columnIndex) throws SQLExceptionpublic float getFloat(int colum

25、nIndex) throws SQLException public Int getInt(int columnIndex) throws SQLExceptionpublic Long getLong(int columnIndex) throws SQLExceptionpublic Object getObject(int columnIndex) throws SQLException public short getShort(int columnIndex) throws SQLException public String getString(int columnIndex) t

26、hrows SQLException public java.sql.Time getTime(int parameterIndex, Time x) throws SQLException public java.sql.TimeStamp getTimestamp(int columnIndex) throws SQLException以字段名稱為參數(shù)的讀取方法如下:public BigDecimal getBigDecimal(String columnName) throws SQLException public boolean getBoolean(String columnNam

27、e) throws SQLException public byte getByte(String columnName) throws SQLExceptionpublic byte getBytes(String columnName) throws SQLExceptionpublic double getDouble(String columnName) throws SQLExceptionpublic float getFloat(String columnName) throws SQLException public Int getInt(String columnName)

28、throws SQLException public Long getLong(String columnName) throws SQLExceptionpublic Object getObject(String columnName) throws SQLException public short getShort(String columnName) throws SQLException public String getString(String columnName) throws SQLException public java.sql.Time getTime(String

29、 columnName) throws SQLException public java.sql.TimeStamp getTimestamp(String columnName) throws SQLException9.3 實(shí)實(shí) 例例 【例9.1】給出一個(gè)完整的實(shí)例,包括建立所需用戶數(shù)據(jù)庫(kù),配置ODBC數(shù)據(jù)源,編寫訪問(wèn)數(shù)據(jù)庫(kù)的程序,查看運(yùn)行結(jié)果。其中訪問(wèn)數(shù)據(jù)庫(kù)程序輸出班級(jí)為“025”的記錄,并將“025”修改為“計(jì)算機(jī)”。9.3.1 建立用戶數(shù)據(jù)庫(kù)建立用戶數(shù)據(jù)庫(kù) 建立FoxPro數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)名為Student.mdb,其中一個(gè)表為Xuesheng.dbf,記錄如圖9.1所示。圖9.1 表

30、Xuesheng.dbf中的記錄9.3.2 配置配置ODBC數(shù)據(jù)源數(shù)據(jù)源 在Windows 2000下配置ODBC數(shù)據(jù)源,首先找到程序管理工具數(shù)據(jù)源(ODBC),(在Windows 98下,可在控制面板中找到ODBC),調(diào)出“ODBC數(shù)據(jù)源管理器”,如圖9.2所示。圖9.2 ODBC數(shù)據(jù)源管理器點(diǎn)擊“添加”按鈕,出現(xiàn) “創(chuàng)建新數(shù)據(jù)源” 窗口,如圖9.3所示。圖9.3 為數(shù)據(jù)源選擇驅(qū)動(dòng)程序 在圖9.3中選擇“Microsoft Visual FoxPro Driver”選項(xiàng),然后點(diǎn)擊“完成”按鈕,進(jìn)入“ODBC Visual FoxPro Setup”窗口,如圖9.4所示。圖9.4 完成ODBC

31、數(shù)據(jù)源的配置 (1) “Data Source Name (數(shù)據(jù)源名)”:ODBC提供給應(yīng)用程序的數(shù)據(jù)庫(kù)名字。在圖9.4中填為STU。 (2) “Description (描述)”:用來(lái)說(shuō)明數(shù)據(jù)庫(kù)的文字信息,可根據(jù)自己的需要填寫。在圖9.4中填為“用于JAVA程序的數(shù)據(jù)庫(kù)測(cè)試”。 (3) “Path (路徑)”是ODBC映射數(shù)據(jù)庫(kù)的具體路徑,可以直接填寫,也可以單擊“Browse”(瀏覽)按鈕選擇一數(shù)據(jù)庫(kù)。這里選擇的路徑為E:_WorkJavaSTUDENT.DBC。 (4) 點(diǎn)擊“OK (確定) ”按鈕,可以看見(jiàn)“ODBC數(shù)據(jù)源管理器”窗口多出一個(gè)STU數(shù)據(jù)源。9.3.3 數(shù)據(jù)庫(kù)訪問(wèn)的步驟數(shù)

32、據(jù)庫(kù)訪問(wèn)的步驟編寫數(shù)據(jù)庫(kù)訪問(wèn)程序的步驟如下:(1) 引入java.sql的包。import java.sql.*;(2) 聲明變量。Statement stmt;PreparedStatement pstmt;ResultSet rs;(3) 加載驅(qū)動(dòng)程序。Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);(4) 連接數(shù)據(jù)庫(kù)。String urlName = jdbc:odbc:STU;Connection con = DriverManager.getConnection(urlName,);(5) 執(zhí)行查詢操作。rs = stmt.executeQue

33、ry(SELECT 學(xué)號(hào),姓名,班級(jí) from Xuesheng WHERE 班級(jí)=025);.pstmt = con.prepareStatement(UPDATE Xuesheng SET 班級(jí) = ? WHERE 班級(jí) = ?);pstmt.setString(1,計(jì)算機(jī));pstmt.setString(2,025);pstmt.executeUpdate();. (6) 關(guān)閉數(shù)據(jù)庫(kù)。 con.close();9.3.4 源程序代碼源程序代碼源程序代碼如下:/程序文件名UseJDBC.javaimport java.sql.*;public class UseJDBCpublic static void main(String args)tryStatement stmt;PreparedStatement pstmt;ResultSet rs;/加載JD

溫馨提示

  • 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)論