理工課件-java基礎(chǔ)3-數(shù)據(jù)庫10jdbc_第1頁
理工課件-java基礎(chǔ)3-數(shù)據(jù)庫10jdbc_第2頁
理工課件-java基礎(chǔ)3-數(shù)據(jù)庫10jdbc_第3頁
理工課件-java基礎(chǔ)3-數(shù)據(jù)庫10jdbc_第4頁
理工課件-java基礎(chǔ)3-數(shù)據(jù)庫10jdbc_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JAVA核心技術(shù)JDBC本章相關(guān)詞匯單詞說明driver驅(qū)動,驅(qū)動程序connection連接statement語句prepared預備的,預編譯的result結(jié)果create創(chuàng)建,創(chuàng)造execute執(zhí)行query查詢JDBC了解JDBC的概念和必要性了解JDBC驅(qū)動程序類型了解java.sql包使用JDBC進行數(shù)據(jù)庫編程PreparedStatement接口純Java驅(qū)動方式連接不同數(shù)據(jù)庫JDBC了解JDBC的概念和必要性了解JDBC驅(qū)動程序類型了解java.sql包使用JDBC進行數(shù)據(jù)庫編程PreparedStatement接口純Java驅(qū)動方式連接不同數(shù)據(jù)庫數(shù)據(jù)庫訪問技術(shù)簡介當今企業(yè)級應用程序大部分采用了客戶機/服務器(C/S)模式;客戶端機器需要與服務器進行通訊,要操作數(shù)據(jù)庫中的數(shù)據(jù),執(zhí)行SQL(StructuredQueryLanguage結(jié)構(gòu)化查詢語言)語句以及檢索查詢結(jié)果;在Java中實現(xiàn)這些活動的技術(shù)稱作JDBC。數(shù)據(jù)庫編程示意圖

客戶機/服務器應用程序

數(shù)據(jù)庫編程JDBC數(shù)據(jù)庫執(zhí)行SQL語句檢索查詢結(jié)果

關(guān)于DBMSDBMS(DataBaseManagementSystem)是指數(shù)據(jù)庫管理系統(tǒng);目前DBMS的生產(chǎn)商眾多,產(chǎn)品也不盡相同,如:Oracle公司的Oracle系列;Microsoft公司的Access系列和SQLServer系列;Microsoft公司早期的FoxPro;IBM公司的DB2;Sybase公司的Sybase;還有自由開源的MySQL等等。這就意味著編程語言要針對不同的DBMS開發(fā)不同版本的應用程序,這將是一項非??菰锏墓ぷ?。ODBCODBC(OpenDataBaseConnectivity)指開放式數(shù)據(jù)庫連接,是由Microsoft公司提供的應用程序接口;它負責連接各種不同產(chǎn)商和類型的DBMS,然后為各種不同的編程語言提供查詢、插入、修改和刪除數(shù)據(jù)的功能;如同在各種不同的DBMS和各種不同的編程語言之間架設(shè)了一座通用的橋梁。JDBCJDBC(JavaDataBaseConnectivity)是由SunMicrosystem公司提供的API(ApplicationProgrammingInterface應用程序編程接口);它為Java應用程序提供了一系列的類,使其能夠快速高效地訪問數(shù)據(jù)庫;這些功能是由一系列的類和對象來完成的,我們只需使用相關(guān)的對象,即可完成對數(shù)據(jù)庫的操作。JDBC工作方式示意圖

Java程序

JDBC驅(qū)動程序數(shù)據(jù)庫SQL命令

結(jié)果

JDBC驅(qū)動程序類型使用JDBC連接數(shù)據(jù)庫可以通過不同的驅(qū)動方式來實現(xiàn),有4種驅(qū)動類型:JDBC-ODBC橋驅(qū)動純Java驅(qū)動本地API部分Java驅(qū)動JDBC網(wǎng)絡純Java驅(qū)動不論采用哪種驅(qū)動方式,在程序中對數(shù)據(jù)庫的操作方式基本相同,只是加載不同的驅(qū)動程序即可。java.sql包java.sql包也是Java內(nèi)置的包,其中包含了一系列用于與數(shù)據(jù)庫進行通信的類和接口;如果要使用到這些類和接口的話,則必須顯式地聲明如下語句:

importjava.sql.*;java.sql包中的一些接口接口名稱說明Connection連接對象,用于與數(shù)據(jù)庫取得連接Driver用于創(chuàng)建連接(Connection)對象Statement語句對象,用于執(zhí)行SQL語句,并將數(shù)據(jù)檢索到結(jié)果集(ResultSet)對象中PreparedStatement預編譯語句對象,用于執(zhí)行預編譯的SQL語句,執(zhí)行效率比Statement高ResultSet結(jié)果集對象,包含執(zhí)行SQL語句后返回的數(shù)據(jù)的集合java.sql包中的一些類類名稱說明SQLException數(shù)據(jù)庫異常類,是其它JDBC異常類的根類,繼承于java.lang.Exception,絕大部分對數(shù)據(jù)庫進行操作的方法都有可能拋出該異常DriverManager驅(qū)動程序管理類,用于加載和卸載各種驅(qū)動程序,并建立與數(shù)據(jù)庫的連接Date該類中包含有將SQL日期格式轉(zhuǎn)換成Java日期格式的方法TimeStamp表示一個時間戳,能精確到納秒Java.util.Date是java.sql.Date和java.sql.Timestamp的父類java.sql.Date是針對SQL語句使用的,它只包含日期而沒有時間部分java.sql.Timestamp彌補了java.sql.Date的缺陷,保存日期時間精確納秒java.util.Date除了SQL語句的情況下面使用java.sql.Date和java.sql.Timestamp及java.util.Date的區(qū)別和使用三者都可以通過getTime()進行互相轉(zhuǎn)換//獲取系統(tǒng)當前時間

java.util.Dateud=newjava.util.Date();

//將java.util.Date轉(zhuǎn)化成java.sql.Datejava.sql.Datesd=newjava.sql.Date(ud.getTime());//將java.util.Date轉(zhuǎn)化成java.sql.Timestampjava.sql.Timestamptime=newjava.sql.Timestamp(ud.getTime());//將java.sql.Date轉(zhuǎn)化成java.util.Dateud=newjava.util.Date(sd.getTime());//將java.sql.Timestamp轉(zhuǎn)化成java.util.Dateud=newjava.util.Date(time.getTime());java.sql.Date和java.sql.Timestamp及java.util.Date的相互轉(zhuǎn)換JDBC程序訪問數(shù)據(jù)庫步驟開始導入java.sql包加載并注冊驅(qū)動程序創(chuàng)建Connection對象創(chuàng)建Statement對象執(zhí)行SQL語句關(guān)閉ResultSet對象關(guān)閉Statement對象關(guān)閉Connection對象使用ResultSet對象建立數(shù)據(jù)源(ODBC)附加相應產(chǎn)商提供的驅(qū)動結(jié)束JDBC-ODBC橋方式純Java驅(qū)動方式步驟詳解1:建立數(shù)據(jù)源這里以鏈接oracle數(shù)據(jù)庫為例1.找到oracle安裝路徑的JAR包—ojdbc14.jar復制到項目中與src同級文件夾lib中,并導入到項目,地址如下:E:\oracle\product\10.2.0\db_1\jdbc\lib步驟詳解2:加載驅(qū)動程序1.使用Class類的forName方法,將驅(qū)動程序類加載到JVM(Java虛擬機)中,代碼如下:對于鏈接oracle數(shù)據(jù)庫的驅(qū)動方式,應該加載:Class.forName("oracle.jdbc.driver.OracleDriver");方法原型說明staticClassforName(StringclassName)throwsClassNotFoundException將由className指定完整名稱的類加載到JVM中,如果加載失敗,將拋出異常,必須捕捉步驟詳解3:獲得連接對象方法原型說明staticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException參數(shù)url是連接字符串,參數(shù)user是數(shù)據(jù)庫用戶名,參數(shù)password是登錄口令,成功連接到數(shù)據(jù)庫返回Connection對象,連接失敗則拋出SQLException異常,必須捕捉成功加載驅(qū)動后,必須使用DriverManager的靜態(tài)方法getConnection來獲取鏈接對象。對于鏈接Oracle數(shù)據(jù)庫方式如下:Connectioncon=DriverManager.getConnection("jdbc:oracle:thin:@:1521:orcl","oa","oa");步驟詳解釋4:創(chuàng)建語句對象一旦成功連接到數(shù)據(jù)庫,獲得Connection對象后,必須通過Connection對象createStatement方法來創(chuàng)建語句對象,才可以執(zhí)行SQL語句;Statementsta=con.createStatement();方法原型說明StatementcreateStatement()throwsSQLException成功創(chuàng)建返回Statement對象,否則拋出SQLException異常,必須捕捉步驟詳解5:執(zhí)行SQL語句使用語句對象來執(zhí)行SQL語句,有兩種情況:一種是執(zhí)行DELETE、UPDATE和INSERT之類的數(shù)據(jù)庫操作語句(DML),這樣的語句沒有數(shù)據(jù)結(jié)果返回,使用Statement對象的executeUpdate方法執(zhí)行;如:intrs=st.executeUpdate("insertintoperson(pid,pname)values(4,'mxt')");方法原型說明intexecuteUpdate(Stringsql)throwsSQLException參數(shù)sql是要執(zhí)行的SQL語句,執(zhí)行成功返回受影響的行數(shù),執(zhí)行失敗則拋出SQLException異常,必須捕捉步驟詳解5:執(zhí)行SQL語句(續(xù))另一種是執(zhí)行SELECT這樣的數(shù)據(jù)查詢語句(DQL),這樣的語句將從數(shù)據(jù)庫中獲得所需的數(shù)據(jù),使用Statement對象的executeQuery方法執(zhí)行;如:ResultSetrs=null;

rs=st.executeQuery("select*frompersonwherepid="+pid);while(rs.next()){System.out.println("編號:"+rs.getInt("pid")+"姓名:"+rs.getString("pname"));}方法原型說明ResultSetexecuteQuery(Stringsql)throwsSQLException參數(shù)sql是要執(zhí)行的SQL語句,查詢成功返回包含有結(jié)果數(shù)據(jù)的ResultSet對象,否則拋出SQLException異常,必須捕捉步驟詳解6:關(guān)閉資源當對數(shù)據(jù)庫的操作結(jié)束后,應當將所有已經(jīng)被打開的資源關(guān)閉,否則將會造成資源泄漏;Connection對象、Statement對象和ResultSet對象都有執(zhí)行關(guān)閉的close方法;函數(shù)原型都是:voidclose()throwsSQLException如:

rs.close();//關(guān)閉ResultSet對象

sta.close();//關(guān)閉Statement對象

con.close();//關(guān)閉Connection對象有可能拋出SQLException異常,必須捕捉;請注意關(guān)閉的順序,最后打開的資源最先關(guān)閉,最先打開的資源最后關(guān)閉。數(shù)據(jù)庫操作示例DMLConnectioncon=null;Statementst=null;intrs=0;try{Class.forName("oracle.jdbc.driver.OracleDriver");con=DriverManager.getConnection("jdbc:oracle:thin:@:1521:orcl","oa","oa");st=con.createStatement();rs=st.executeUpdate("insertintoperson(pid,pname,pgender,page,pmsg)values(4,'mxt','女',25,'今天天氣很不錯')");if(rs>0){System.out.println("添加成功");}else{System.out.println("添加失敗");}}catch(Exceptione){System.out.println(e.toString());}finally{

try{if(st!=null){st.close();}if(con!=null){con.close();}}catch(Exceptione2){System.out.println(e2.toString());}}}數(shù)據(jù)庫操作示例DQLSystem.out.println("請輸入要查詢的學生編號:");Scannerscanner=newScanner(System.in);Stringpid=scanner.nextLine();Connectioncon=null;Statementst=null;ResultSetrs=null;try{//注冊驅(qū)動類Class.forName("oracle.jdbc.driver.OracleDriver");con=DriverManager.getConnection("jdbc:oracle:thin:@:1521:orcl","oa","oa");st=con.createStatement();rs=st.executeQuery("select*frompersonwherepid="+pid);while(rs.next()){System.out.println("編號:"+rs.getInt("pid")+"姓名:"+rs.getString("pname"));}}catch(Exceptione){e.printStackTrace();}finally{try{if(rs!=null){rs.close();}if(st!=null){st.close();}if(con!=null){con.close();}}catch(Exceptione2){}}}操作結(jié)果集使用Statement對象的executeQuery方法成功執(zhí)行SELECT語句后,將返回一個包含有結(jié)果數(shù)據(jù)的ResultSet對象,要從該對象中獲取數(shù)據(jù),將使用到如下方法:方法原型說明booleannext()throwsSQLException將結(jié)果集游標往下移動一行,如果已經(jīng)到達結(jié)果集最后,將會返回false,有可能拋異常,必須捕捉XgetX(StringcolumnName)throwsSQLException獲得某個字段的值,X是指具體的數(shù)據(jù)類型,視數(shù)據(jù)庫表中字段的具體情況而定,該方法有一組,并且每個都有兩種重載方法,一種是以字段名稱為參數(shù),另一種是以字段索引為參數(shù)(字段索引從1開始),有可能拋異常,必須捕捉XgetX(intcolumnIndex)throwsSQLException操作結(jié)果集示例try{StringstrCon="jdbc:odbc:dsn_javaBase";System.out.println("正在連接數(shù)據(jù)庫...");Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon;con=DriverManager.getConnection(strCon,"sa",“sa");System.out.println("成功連接到數(shù)據(jù)庫。");Statementsta=con.createStatement();ResultSetrs=sta.executeQuery("SELECT*FROMFriends");System.out.println("查詢到數(shù)據(jù)如下:");

while(rs.next()){//循環(huán)將結(jié)果集游標往下移動,到達末尾返回false

//根據(jù)字段名稱獲得各個字段的值

System.out.print(rs.getString("Name")+"\t");//獲得字符串

System.out.print(rs.getString("Address")+"\t");//獲得字符串

System.out.print(rs.getInt("Telephone")+"\t");//獲得整數(shù)

System.out.print(rs.getDate("HireDate")+"\t");//獲得日期型數(shù)據(jù)

System.out.println(rs.getFloat("Salary"));//獲得浮點型數(shù)據(jù)

}rs.close();sta.close();con.close();}catch(ClassNotFoundExceptioncnfe){cnfe.printStackTrace();}

catch(SQLExceptionsqle){sqle.printStackTrace();}1PreparedStatemend和Statement區(qū)別Statement(語句對象)PreparedStatemend(預編譯語句對象)1.PreparedStatement是預編譯的,對于批量處理可以大大提高效率.也叫JDBC存儲過程2.在對數(shù)據(jù)庫只執(zhí)行一次性存取的時侯PreparedStatement對象的開銷比Statement大3.statement每次執(zhí)行sql語句,相關(guān)數(shù)據(jù)庫都要執(zhí)行sql語句的編譯,preparedstatement是預編譯的,

preparedstatement支持批處理4.PreparedStatement對象不僅包含了SQL語句,而且該語句如果已經(jīng)被編譯過,那么當該語句僅僅只是修改變量后再次執(zhí)行的時候,只需DBMS運行SQL語句,而不必編譯。所以PreparedStatement對象將會大大減少運行時間,當然也加快了訪問數(shù)據(jù)庫的速度。5.然而,在Oracle環(huán)境中,開發(fā)人員實際上有更大的靈活性。當使用Statement或PreparedStatement對象時,Oracle數(shù)據(jù)庫會緩存SQL語句以便以后使用。在一些情況下,由于驅(qū)動器自身需要額外的處理、在Java應用程序和Oracle服務器間增加的網(wǎng)絡活動,執(zhí)行PreparedStatement對象實際上會花更長的時間。6.然而,除了緩沖的問題之外,至少還有一個更好的原因使我們在企業(yè)應用程序中更喜歡使用PreparedStatement對象,那就是安全性。傳遞給PreparedStatement對象的參數(shù)可以被強制進行類型轉(zhuǎn)換,使開發(fā)人員可以確保在插入或查詢數(shù)據(jù)時與底層的數(shù)據(jù)庫格式匹配。PreparedStatement接口1如果要多次執(zhí)行相似的SQL語句,可以使用PreparedStatemend(預編譯語句對象)對象來執(zhí)行;通過Connection對象的prepareStatement方法來創(chuàng)建預編譯語句對象;PreparedStatement對象會將SQL語句預先編譯,這樣將會獲得比Statement對象更高的執(zhí)行效率。方法原型說明PreparedStatementprepareStatement(Stringsql)throwsSQLException參數(shù)sql是要執(zhí)行的SQL語句,根據(jù)指定的SQL語句創(chuàng)建PrepareStatement對象,有可能拋異常,必須捕捉PreparedStatement接口2包含在PreparedStatement對象中的SQL語句可以帶有一個或多個參數(shù),使用“?”作為占位符,如:PreparedStatement

ps=con.prepareStatement("insertintoperson(pid,pname)values(?,?)");在執(zhí)行SQL語句之前,必須使用PreparedStatement對象中的setX方法設(shè)置每個“?”位置的參數(shù)值;如: ps.setString(1,5); ps.setString(2,"陳老師");方法原型說明voidsetX(intparameterIndex,Xx)throwsSQLException將parameterIndex指定的“?”位置指定為x的值,這里X可以指代任意數(shù)據(jù)類型,“?”的索引從1開始。PreparedStatement接口3設(shè)置好每個參數(shù)的值之后,就可以使用PreparedStatement對象的executeUpdate和executeQuery方法來執(zhí)行SQL語句,這一點和Statement對象很相似:方法原型說明intexecuteUpdate()throwsSQLException用于執(zhí)行INSERT、DELETE和UPDATE語句,執(zhí)行成功返回受影響的行數(shù),否則拋出SQLException異常,必須捕捉ResultSetexecutQuery()throwsSQLException用于執(zhí)行SELECT語句,執(zhí)行成功返回包含有結(jié)果數(shù)據(jù)的ResultSet對象,否則拋出SQLException異常,必須捕捉intresult=ps.executeUpdate();//增,刪,改ResultSetrs=ps.executeQuery();//查詢PreparedStatement對象示例(DML)try{Class.forName("oracle.jdbc.driver.OracleDriver");}catch(ClassNotFoundExceptione){e.printStackTrace();}Connectioncon=null;ResultSetrs=null;PreparedStatementps=null;try{con=DriverManager.getConnection("jdbc:oracle:thin:@:1521:orcl","oa","oa");ps=con.prepareStatement("insertintoperson(pid,pname,pgender,page,pmsg)values(?,?,?,?,?)");ps.setString(1,"5");ps.setString(2,"陳老師");ps.setString(3,"女");ps.setInt(4,27);ps.setString(5,"xxxxxxx");intresult=ps.executeUpdate();if(result>0){System.out.println("添加成功");}else{System.out.println("添加失敗");}}catch(SQLExceptione){e.printStackTrace();}finally{try{if(rs!=null){rs.close();}if(ps!=null){ps.close();}if(con!=null){con.close();}}catch(SQLExceptione){e.printStackTrace();}}}PreparedStatement對象示例(DQL)try{Class.forName("oracle.jdbc.driver.OracleDriver");}catch(ClassNotFoundExceptione){e.printStackTrace();}System.out.println("請輸入要查詢的老師編號");Scannerscan=newScanner(System.in);Stringtid=scan.nextLine();Connectioncon=null;PreparedStatementps=null;ResultSetrs=null;try{con=DriverManager.getConnection("jdbc:oracle:thin:@:1521:orcl","oa","oa");ps=con.prepareStatement("select*frompersonwherepid=?");ps.setString(1,tid);rs=ps.executeQuery();while(rs.next()){System.out.println("編號:"+rs.getInt("tid")+"姓名:"+rs.getString("tname"));}}catch(SQLExceptione){e.printStackTrace();}finally{try{if(rs!=null){rs.close();}if(ps!=null){ps.close();}if(con!=null){con.close();}}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}純Java驅(qū)動方式連接數(shù)據(jù)庫使用JDBC-ODBC橋方式連接數(shù)據(jù)庫,其性能完全取決于數(shù)據(jù)源(ODBC)的性能,并且無法脫離Microsoft的平臺,這樣將帶來不便;大部分DBMS產(chǎn)商都為自己的產(chǎn)品開發(fā)了純Java的驅(qū)動程序,我們只需要加載相應的驅(qū)動,就可以直接連接到數(shù)據(jù)庫,而無需通過ODBC橋連接;下載驅(qū)動程序包要使用純Java驅(qū)動,首先必須獲得相應數(shù)據(jù)庫的驅(qū)動程序包;根據(jù)數(shù)據(jù)庫的類型,登錄對應產(chǎn)商的官方網(wǎng)站,一般都可以免費獲得;下載后,復制到本地磁盤,并將完整路徑設(shè)置到classpath環(huán)境變量中,如用開發(fā)工具開發(fā)程序,還需在開發(fā)環(huán)境中設(shè)置路徑。純Java驅(qū)動連接SQLServer2000使用純Java驅(qū)動連接到SQLServer2000數(shù)據(jù)庫,加載驅(qū)動程序應改成如下語句:

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");連接字符串應如下格式:"jdbc:microsoft:sqlserver://服務器名或IP:1433;databaseName=數(shù)據(jù)庫名"如:

Connectioncon=DriverManager.getConnection("jdbc:microsoft:sqlserver://:1433;databaseName=pubs","sa","");純Java驅(qū)動連接SQLServer2005使用純Java驅(qū)動連接到SQLServer2005數(shù)據(jù)庫,加載驅(qū)動程序應改成如下語句:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");連接字符串應如下格式:

"jdbc:sqlserver://服務器名或IP:1433;databaseName=數(shù)據(jù)庫名"如:

Connectioncon=DriverManager.getConnection("jdbc:sqlserver://:1433;databaseName=pubs","sa","sa");純Java驅(qū)動連接MySQL使用純Java驅(qū)動連接到MySQL5.0數(shù)據(jù)庫,加載驅(qū)動程序應改成如下語句:

Class.forName("com.mysql.jdbc.Driver");連接字符串應如下格式:

"jdbc:mysql://服務器名或IP:3306/數(shù)據(jù)庫名"如:

Connectioncon=DriverManager.getConnection("jdbc:mysql://:3306/test","root","root");

純Java驅(qū)動連接Oracle使用純Java驅(qū)動連接到Oracle9i數(shù)據(jù)庫,加載驅(qū)動程序應改成如下語句:

Class.forName("oracle.jdbc.driver.OracleDriver");連接字符串應如下格式:

"jdbc:oracle:thin:@服務名或IP:1521:數(shù)據(jù)庫名"如:

Connectioncon=DriverManager.getConnection("jdbc:oracle:thin:@:1521:test","scott","tiger");改進數(shù)據(jù)庫連接(屬性)//驅(qū)動類public

static

finalStringDRIVER="oracle.jdbc.driver.OracleDriver";//字段,數(shù)據(jù)庫連接字符串public

static

finalStringURL="jdbc:oracle:thin:@:1521:orcl";//用戶名public

static

finalStringUID="oa";//密碼public

static

finalStringPWD="oa";//數(shù)據(jù)庫連接對象Connectioncon=null;//數(shù)據(jù)庫預編譯處理對象PreparedStatementps=null;//結(jié)果集對象ResultSetrs=null;改進數(shù)據(jù)庫連接(連接對象)/***返回數(shù)據(jù)庫連接對象**@return*/publicConnectiongetCon(){try{Class.forName(DRIVER);}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.pri

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論