java語言程序設(shè)計java數(shù)據(jù)庫編程_第1頁
java語言程序設(shè)計java數(shù)據(jù)庫編程_第2頁
java語言程序設(shè)計java數(shù)據(jù)庫編程_第3頁
java語言程序設(shè)計java數(shù)據(jù)庫編程_第4頁
java語言程序設(shè)計java數(shù)據(jù)庫編程_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java數(shù)據(jù)庫編程Linbo He數(shù)據(jù)庫技術(shù)數(shù)據(jù)庫是一門研究數(shù)據(jù)管理的技術(shù),它開始于本世紀60年代,經(jīng)過多年的發(fā)展,已形成理論體系,成為計算機軟件的一個重要分支。 數(shù)據(jù)庫是信息管理的基礎(chǔ),任何計算機應(yīng)用都需要處理大量數(shù)據(jù),幾乎都少不了數(shù)據(jù)庫的需求。隨著網(wǎng)絡(luò)的應(yīng)用,遠程異地的網(wǎng)絡(luò)數(shù)據(jù)庫使用也變得越來越重要。為什么要使用數(shù)據(jù)庫?盡管文件系統(tǒng)可以解決不少問題,有些問題是文件系統(tǒng)所無法解決的,如果給文件系統(tǒng)加上這些特性,那么文件系統(tǒng)也就成為了一個數(shù)據(jù)庫。 數(shù)據(jù)的冗余與數(shù)據(jù)不一致:重復數(shù)據(jù)多,而且對于分布式, 有可能出現(xiàn)數(shù)據(jù)無法同步的問題。數(shù)據(jù)訪問困難,數(shù)據(jù)孤立:因為數(shù)據(jù)存儲沒有采取同樣的格式,使得使用

2、統(tǒng)一的接口訪問數(shù)據(jù)變得不可能。完整性問題:數(shù)據(jù)的正確性和相容性。原子性問題:就是事務(wù)處理,如何保證一個操作的完整性。并發(fā)訪問:這也是事務(wù)處理的一部分,數(shù)據(jù)庫需要應(yīng)對同時異地對同一個數(shù)據(jù)操作的可能。安全性問題:主要是數(shù)據(jù)庫訪問權(quán)限問題。關(guān)系型數(shù)據(jù)庫的基本概念數(shù)據(jù)庫(date base):按特定方式存儲在存儲媒體中可共享的相關(guān)數(shù)據(jù)的集合??梢岳斫鉃閿?shù)據(jù)的倉庫。其組織方式可支持對數(shù)據(jù)的有效存取?,F(xiàn)在的數(shù)據(jù)庫往往由多個表(table)和表之間的關(guān)聯(lián)關(guān)系組成的數(shù)據(jù)的集合,表是一個由若干行、若干列組成的二維的關(guān)系結(jié)構(gòu)。其存在形式是一個計算機文件: 如: ABC.DBF,客戶.MDB, Total.DBC,

3、我們稱之為數(shù)據(jù)庫文件或庫文件。 實體用表來表示,實體之間的關(guān)系也用表來表示。 表的列稱為字段。數(shù)據(jù)庫的概念分層物理層:定義數(shù)據(jù)的存儲格式。能夠涉及這一層的人是數(shù)據(jù)庫軟件開發(fā)者。邏輯層:定義數(shù)據(jù)以及數(shù)據(jù)之間的關(guān)系。能夠涉及這一層的人是數(shù)據(jù)庫的設(shè)計者。視圖層:定義最終展現(xiàn)在客戶面前的數(shù)據(jù)的格式。涉及這一層的是數(shù)據(jù)庫客戶端的開發(fā)者, 以及最終的用戶。這三層從上到下層層透明。用戶不關(guān)心數(shù)據(jù)庫結(jié)構(gòu),數(shù)據(jù)庫設(shè)計開發(fā)者不關(guān)心存儲結(jié)構(gòu)。數(shù)據(jù)模型什么是數(shù)據(jù)模型? 數(shù)據(jù)模型是客觀事物及其聯(lián)系的數(shù)據(jù)描述,數(shù)據(jù)模型應(yīng)具有數(shù)據(jù)的描述和數(shù)據(jù)聯(lián)系兩方面功能。數(shù)據(jù)的描述就是指出: 模型中包含那些記錄類型,并對記錄類型進行命名

4、; 指明各個記錄類型由那些數(shù)據(jù)構(gòu)成,并對數(shù)據(jù)項進 行命名,每個數(shù)據(jù)項均需指明其數(shù)據(jù)類型和取值范 圍。數(shù)據(jù)間聯(lián)系的描述就是指明: 各個不同記錄間所存在的聯(lián)系和聯(lián)系方式。實體模型 什么是實體模型呢? 實體聯(lián)系模型又稱信息模型,是客觀事物及其自然聯(lián)系在人腦中所形成的概念。 實體模型和數(shù)據(jù)模型的關(guān)系是什么? 數(shù)據(jù)模型本質(zhì)上是“信息模型”的數(shù)據(jù)化表示。從實體模型到數(shù)據(jù)模型要經(jīng)歷三個領(lǐng)域的演變過程: 現(xiàn)實世界信息世界數(shù)據(jù)世界實體與屬性這是信息世界中廣泛使用的兩個術(shù)語實體:現(xiàn)實世界任何可相互區(qū)別的事物,不論是實際存在的東西,還是概念性的東西,或是事物與事物之間的聯(lián)系,一律統(tǒng)稱為實體。屬性:實體所具有的性質(zhì),

5、統(tǒng)稱為屬性。實體是靠屬性來描述的。實體集同一類型的實體集合稱為實體集。域?qū)嶓w中的每個屬性,都有一個取值范圍,這叫作屬性的“域”。域可以是整數(shù)、實數(shù)、字符串等鍵(key)又稱為關(guān)鍵字,它是指在實體屬性中,可用于區(qū)別實體集中不同個體的那個屬性或幾個屬性的組合。實體間的聯(lián)系方式實體之間的聯(lián)系實際上反映了實體之間的語義 關(guān)系。聯(lián)系也是實體,因此它也可以有屬性。 實體間聯(lián)系情況比較復雜,就其聯(lián)系方式來說, 我們可把它分為以下三種:1) :一對一聯(lián)系(簡記為1:1)2) :一對多聯(lián)系(簡記為1:n)3) :多對多聯(lián)系(簡記為m:n)一對一聯(lián)系 若兩個同型實體集中,一方的一個實體唯一與另一方的一個實體相對應(yīng)

6、,則稱為1:1聯(lián)系。如下圖所示的婚姻關(guān)系一對多聯(lián)系若兩個不同型的實體集中,一方一個實體對應(yīng)另一方多個實體;反之另一方一個實體最多只與本方一個實體相對應(yīng), 稱1:n聯(lián)系。如下圖所示:多對多關(guān)系 若兩不同型實體集中,任何方一個實體都與對方一個或多個實體相對應(yīng),稱m :n聯(lián)系,如下圖學生與課程的關(guān)系 “多對多模式”需要在A表和B表之間有一個關(guān)聯(lián)表,這個關(guān)聯(lián)表也是“多對多模式”的核心所在。根據(jù)關(guān)聯(lián)表是否有獨立的業(yè)務(wù)處理需求,可將其劃分為兩種細分情況。 具備獨立的業(yè)務(wù)處理需求,是一個業(yè)務(wù)實體對象,因此它具備一些特有的屬性。 本身不具備獨立的業(yè)務(wù)處理需求,所以也就沒有什么特殊的屬性。E-R圖的畫法 E-R

7、圖中包括:實體、屬性和聯(lián)系三種基本圖素。 習慣上實體用方框表示,實體的屬性用橢圓框表示,聯(lián)系用菱形框表示。E-R的設(shè)計原則針對每一用戶作出該用戶信息的局部E-R圖, 確定該用戶視圖的實體、屬性和聯(lián)系。 能作為屬性的就不要作為實體,這樣有利于簡化E-R圖。綜合局部E-R圖,產(chǎn)生出總體E-R圖。 在綜合的過程中,同名實體只能出現(xiàn)一次,還要去掉不必要的聯(lián)系,以便消除冗余。最后說明一點:一個系統(tǒng)的E-R圖不是唯一的,強調(diào)不同的側(cè)面作出的E-R圖可能有很大的不同。例設(shè)某企業(yè)信息系統(tǒng)有下列用戶:人事科處理職工;供應(yīng)科處理采購業(yè)務(wù);總務(wù)科處理倉庫業(yè)務(wù);生產(chǎn)科處理產(chǎn)品業(yè)務(wù)。試根據(jù)上述要求設(shè)計出能反映所有用戶信

8、息視圖的總體E- R圖。人事科視圖供應(yīng)科視圖生產(chǎn)科視圖總務(wù)科視圖總體E-R圖綜合后的E-R圖中去掉了一些聯(lián)系,又增添了一些新聯(lián)系,這是允許的導出關(guān)系模型E-R圖僅是現(xiàn)實世界的純粹反映,與數(shù)據(jù)庫具體實現(xiàn)毫無關(guān)系,但它是構(gòu)造數(shù)據(jù)模型的依據(jù)。下面給出從E-R圖出發(fā)導出關(guān)系模型的原則。原則一:對于E-R圖中每個實體,都應(yīng)轉(zhuǎn)換為一個關(guān)系,該關(guān)系應(yīng)包括對應(yīng)實體的全部屬性,并應(yīng)根據(jù)關(guān)系所表達的語義確定哪個屬性作為“主鍵”。鍵在關(guān)系模型中是實現(xiàn)聯(lián)系的主要手段原則二:對于E-R圖中的聯(lián)系,情況比較復雜, 要根據(jù)實體聯(lián)系方式的不同,采取不同的手段 加以實現(xiàn)。數(shù)據(jù)庫語言 數(shù)據(jù)庫語言通常由兩個部分組成: (1) DD

9、L數(shù)據(jù)定義語言。(2)DML數(shù)據(jù)操縱語言。最常用的數(shù)據(jù)庫語言就是SQL。數(shù)據(jù)庫設(shè)計要點主鍵與外鍵一般而言,一個實體不能既無主鍵又無外鍵。主鍵與外鍵的設(shè)計,在全局數(shù)據(jù)庫的設(shè)計中, 占有重要地位。主鍵是實體的高度抽象,主鍵與外鍵的配對,表示實體之間的連接。鍵可以是一無物理意義的數(shù)字串, 由程序自動加1來實現(xiàn)。也可以是有物理意義的字段名或字段名的組合。不過前者比后者好。當PK是字段名的組合時,建議字段的個數(shù)不要太多,多了不但索引占用空間大,而且速度也慢。通俗地理解三個范式第一范式:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解;第二范式:2NF是對記錄的惟一性約束,要求記錄有惟一標識,即

10、實體的惟一性;第三范式:3NF是對字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余;沒有冗余的數(shù)據(jù)庫設(shè)計可以做到。但是,沒有冗余的 數(shù)據(jù)庫未必是最好的數(shù)據(jù)庫,有時為了提高運行效率,就必須降低范式標準,適當保留冗余數(shù)據(jù)。三少原則一個數(shù)據(jù)庫中表的個數(shù)越少越好。只有表的個數(shù)少,才能說明系統(tǒng)的E-R圖少而精,去掉了重復的多余的實體,形成了對客觀世界的高度抽象。一個表中組合主鍵的字段個數(shù)越少越好。因為主鍵的作用,一是建主鍵索引,二是做為子表的外鍵, 所以組合主鍵的字段個數(shù)少了,不僅節(jié)省了運行時 間,而且節(jié)省了索引存儲空間;一個表中的字段個數(shù)越少越好。只有字段的個數(shù)少了,才能說明在系

11、統(tǒng)中不存在數(shù)據(jù)重復,且很少有數(shù)據(jù)冗余Java JDBCJDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。 JDBC提供了一種基準,據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序,同時,JDBC也是個商標名。The typeof JDBCType1:JDBC-ODBC bridge要求客戶端必須安裝ODBC驅(qū)動執(zhí)行效率比較低,對于那些大數(shù)據(jù)量存取的應(yīng)用是不適合的適用于快速的原型系統(tǒng),沒有提供JDBC 驅(qū) 動 的 數(shù) 據(jù)

12、 庫 如 Access(Desktop Database)Type2:Java to native API這種驅(qū)動比起JDBC-ODBC橋執(zhí)行效率略有提高。但是,它仍然需要在客戶端加載數(shù)據(jù)庫廠商提供的代碼庫.這樣就不適合基于internet的應(yīng)用Type3:Java to Net適合那種需要同時連接多個不同種類的數(shù)據(jù)庫并且對并發(fā)連接要求高的應(yīng)用Type4:Java to Native Database最高的性能,通過自己的本地協(xié)議直接與數(shù)據(jù)庫引擎通信JDBC與數(shù)據(jù)庫驅(qū)動程序JDBC 為多種關(guān)系數(shù)據(jù)庫提供了統(tǒng)一訪問方式, 作為特定廠商數(shù)據(jù)庫訪問API的一種高級抽象, 它主要包含一些通用的接口類。

13、真正的數(shù)據(jù)庫訪問操作實現(xiàn)是由各自數(shù)據(jù)庫廠商提供的。通常把廠商提供的特定于數(shù)據(jù)庫的訪問API稱為 數(shù)據(jù)庫JDBC驅(qū)動程序。JDBC通過提供一個抽象的數(shù)據(jù)庫接口,使得程序開發(fā)人員在編程時可以不用綁定在特定數(shù)據(jù)庫廠商的API上,大大增加了應(yīng)用程序的可移植性。在實際運行過程中程序代碼通過JDBC訪問數(shù)據(jù)庫時,仍舊需要調(diào)用特定于數(shù)據(jù)庫的訪問API。應(yīng)用層JDBC 接口層JDBC 驅(qū)動層數(shù)據(jù)庫JDBC訪問數(shù)據(jù)庫層次結(jié)構(gòu)數(shù)據(jù)庫廠商數(shù)據(jù)庫JDBC 驅(qū)動程序JDBC APISunJ2EE 應(yīng)用程序員開發(fā)為了讓JDBC與平臺無關(guān),JDBC提供所謂的“驅(qū)動程序管理器(driver manager)”,它會動態(tài)維護所

14、有“數(shù)據(jù)庫查詢”所需要的驅(qū)動程序?qū)ο笫褂肅lass.forName()進行裝載,向驅(qū)動管理器注冊。創(chuàng)建數(shù)據(jù)庫連接,分為以下幾步: 首先注冊數(shù)據(jù)庫驅(qū)動程序然后根據(jù)具體的JDBC URL地址,調(diào)用DriverManager對象的getConnection()來獲取一個代表數(shù)據(jù)庫連接的java.sql.connection 對象。JDBC URL 的格式如下:jdbc:子協(xié)議:數(shù)據(jù)庫 MySQL數(shù)據(jù)庫:jdbc:mysql:/機器名/數(shù)據(jù)庫名 Oracle數(shù)據(jù)庫:jdbc:oracle:thin機器名:端口名:數(shù)據(jù)庫名 jdbc:sqlserver:/localhost:1433;data base

15、Name=Graduate給定具體的JDBC URL,獲取數(shù)據(jù)庫連接的方法是在DriverManager對象上調(diào)用getConnection()。這種方法有兩種形式:DriverManager.getConnection(url) DriverManager.getConnection(url,user, password)其中第二種方式需要輸入用戶名和行身份認證。信息進連接數(shù)據(jù)庫示例JDBC對數(shù)據(jù)庫執(zhí)行SQL java.sql.Statement 對象代表一條發(fā)送到數(shù)據(jù)庫執(zhí)行的SQL語句。 有三種 Statement 對象: Statement 對象用于執(zhí)行不帶參數(shù)的簡單SQL 語句; Pr

16、eparedStatement 對象用于執(zhí)行帶或不帶參數(shù)的預編譯 SQL 語句 CallableStatement 對象用于執(zhí)行對數(shù)據(jù)庫存儲過程的調(diào)用。StatementStatement對象提供了三種執(zhí)行SQL語句的方法: executeQuery():(用于產(chǎn)生單個結(jié)果集的sql, 如select語句) executeUpdate:(用于執(zhí)行insert、delete、update、create table、drop table等) execute():用于執(zhí)行返回多個結(jié)果集、多個更新計數(shù)或二者組合的語句,多數(shù)程序員不會需要該高級功能。PreparedStatementPreparedSt

17、atement 實例包含已編譯的 SQL語句,這也是將其命名冠以“Prepared”的原因。包含于 PreparedStatement 對象中的SQL 語句可具有一個或多個 IN 參數(shù)。IN 參數(shù)的值在 SQL 語句創(chuàng)建時未被指定。相反的,該語句為每個 IN 參數(shù)保留一個問號(“?”) 作為占位符。每個問號的值必須在該語句執(zhí)行之前通過適當?shù)?setXXX() 方法來提供。由于 PreparedStatement 對象已預編譯過,所以其執(zhí)行速度要快于 Statement 對象。因此多次執(zhí)行的 SQL 語句經(jīng)常創(chuàng)建為PreparedStatement 對象,以提高效率。PreparedStatem

18、ent 接口也有自己的executeQuery、executeUpdate 和execute 方法。Statement 對象本身不包含SQL 語句,因而必須給 Statement.execute 方法提供 SQL 語句作為參數(shù)。PreparedStatement 對象并不將 SQL 語句作為參數(shù)提供給這些方法,因為它們已經(jīng)包含預編譯 SQL 語句。CallableStatement調(diào)用存儲過程將常用的或很復雜的工作,預先用SQL語句寫好并用一個指定的名稱存儲起來, 那么以后要叫數(shù)據(jù)庫提供與已定義好的存儲過程的功能相同的服務(wù)時,只需調(diào)用execute,即可自動完成命令。存儲過程的優(yōu)點存儲過程只在

19、創(chuàng)造時進行編譯,以后每次執(zhí)行存儲過程都不需再重新編譯,而一般SQL語句每執(zhí)行一次就編譯一次,所以使用存儲過程可提高數(shù)據(jù)庫執(zhí)行速度。當對數(shù)據(jù)庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復雜操作用存儲過程封裝起來與數(shù)據(jù)庫提供的事務(wù)處理結(jié)合一起使用。存儲過程可以重復使用,可減少數(shù)據(jù)庫開發(fā)人員的工作量安全性高,可設(shè)定只有本地用戶才具有對指定存儲過程的使用權(quán)Statement接口的比較StatementPreparedStatementCallableStatement代碼創(chuàng)建客戶端客戶端服務(wù)器端代碼存儲客戶端服務(wù)器端服務(wù)器端語言Java,SQLJav

20、a,SQL服務(wù)器端特定數(shù)據(jù)庫語言可配置性靈活較差差可移植性高高(支持)差效率低第一次低,以后高高關(guān)閉JDBC資源首先關(guān)閉記錄集;其次關(guān)閉Statement;最后關(guān)閉連接對象。例:if(rs !=null)tryrs.close();catch(SQLException e.printStackTrace(); if(stm!=null)trystm.close();e)catch(SQLException e)e.printStackTrace();if(con!=null)trycon.close();catch(SQLException e)e.printStackTrace();元數(shù)據(jù)與

21、異常 元數(shù)據(jù) 異常元數(shù)據(jù)元數(shù)據(jù):描述數(shù)據(jù)的數(shù)據(jù)。開發(fā)IDE工具、中間件服務(wù)器開發(fā)人員需要重點掌握。對于普通的應(yīng)用系統(tǒng)開發(fā)者,只需了解即可。DatabaseMetaData接口,用于提供關(guān)于數(shù)據(jù)庫的整體綜合信 息。DatabaseMetaData dmd=conn.getMetaData();DatabaseMetaData:整個數(shù)據(jù)庫的元數(shù)據(jù)數(shù)據(jù)庫版本、名稱數(shù)據(jù)庫驅(qū)動程序的版本、名稱數(shù)據(jù)庫支持的操作(事務(wù)隔離級別、結(jié)果集支持的類型等)ResultSetMetaData ,用于描述結(jié)果集本身的信息, 表結(jié)構(gòu)(包括有哪些字段,字段的類型等信息).即可用于獲取關(guān) 于 ResultSet對象中列的類型

22、和屬性信息的對象。ResultSetMetaData rsmd=rs.getMetaData();異常SQLException:致命性的錯誤,如,表不存在等,主鍵重復等。int getErrorCode()MySQL:1062 DB2:803Oracle:1/Vendor specific依賴于具體的數(shù)據(jù)庫廠商,返回數(shù)據(jù)庫廠商特定的錯誤代碼。SQLException getNextException()檢索到此 SQLException 對象的異常鏈。 如果不存在,則返回 null。String getSQLState()依賴于規(guī)范 ,返回SQL99或者XOPEN中規(guī)定的錯誤代碼。出現(xiàn)SQLE

23、xception的情況: 網(wǎng)絡(luò)連接失敗 SQL語句存在語法錯誤 不支持的函數(shù)調(diào)用 引用不存在的字段 插入主鍵相同的行 其他SQLWarning(非致命性的錯誤,提供關(guān)于數(shù)據(jù)庫訪問警告信息的異常,很多時候無需程序員處理,是SQLException類的子類)拋出SQLWarning之后數(shù)據(jù)庫操作是否成功,與特定的數(shù)據(jù)庫Driver相關(guān)事務(wù)處理What is TransactionJDBC API中使用事務(wù)處理步驟并發(fā)控制What is Transaction事務(wù)處理:一系列的動作作為一個不可分解的操作。ACID 屬性:Atomic Consistent Isolated Durable 1.原子性

24、 ALL-NOTHING事務(wù)中包含的程序作為數(shù)據(jù)庫的邏輯工作單位,它所做的對數(shù)據(jù)修改操作要么全部執(zhí)行,要么完全不執(zhí)行。2. 一致性 事務(wù)的一致性指的是在一個事務(wù)執(zhí)行之前和執(zhí)行之后數(shù)據(jù)庫都必須處于一致性狀態(tài)。這種特性稱為事務(wù)的一致性。假如數(shù)據(jù)庫的狀態(tài)滿足所有的完整性約束,就說該數(shù)據(jù)庫是一致的。3. 分離性 分離性指并發(fā)的事務(wù)是相互隔離的。即一個事務(wù)內(nèi)部的操作及正在操作的數(shù)據(jù)必須起來,不被其它企圖進行修改的事務(wù)看到。4.持久性持久性意味著當系統(tǒng)或介質(zhì)發(fā)生故障時,確保已提交事務(wù)的更新不能丟失即一旦一個事務(wù)提交,DBMS保證它對數(shù)據(jù)庫中數(shù)據(jù)的改變應(yīng)該是永久性的,耐得住任何系統(tǒng)故障。持久性通過數(shù)據(jù)庫備份

25、和恢復來保證。JDBC API中使用事務(wù)處理步驟默認是自動提交:每發(fā)送一條SQL語句都是自動提交的!1) 用false作為參數(shù)調(diào)用Connection setAutoCommit方法;2) 執(zhí)行一或多個關(guān)于數(shù)據(jù)庫的操作;3) 調(diào)用commit方法完成改變;4) 如果發(fā)生錯誤,恢復上次提交后的改變,調(diào)用rollback方法;5) 用true作為參數(shù)調(diào)用setAutoCommit方法; 恢復自動提交事務(wù)開關(guān)。Connection Pool存放Connection對象的容器; 減少連接數(shù)據(jù)庫的開銷;程序請求連接時,在Connection Pool中取連接;連接使用完后,放回Connection Pool,不釋放; Connection Pool對連接進行管理:計數(shù)、監(jiān)控連接狀態(tài);JNDIJNDI(Java Naming and Directory Interface), 能夠提供注冊和訪問遠程服務(wù)的API. 相應(yīng)的API在javax.naming包中.JNDI API為應(yīng)用程序提供了一種統(tǒng)一的訪問遠程服務(wù)的方式. 使用JNDI API , 應(yīng)用程序能夠通過指定一個邏輯的名稱來訪問一個DataSource(當然可以是其他類型的遠程對象) 對象。DataSourceWhat is DataSourc

溫馨提示

  • 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

提交評論