Matlab數(shù)據(jù)庫接口技術(shù)-JDBC.doc_第1頁
Matlab數(shù)據(jù)庫接口技術(shù)-JDBC.doc_第2頁
Matlab數(shù)據(jù)庫接口技術(shù)-JDBC.doc_第3頁
Matlab數(shù)據(jù)庫接口技術(shù)-JDBC.doc_第4頁
Matlab數(shù)據(jù)庫接口技術(shù)-JDBC.doc_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章 Matlab數(shù)據(jù)庫接口技術(shù)第三章 Matlab數(shù)據(jù)庫接口技術(shù)3.1 ODBC技術(shù)3.1.1 ODBC連接Accessu 配置數(shù)據(jù)源u 建立數(shù)據(jù)庫連接u 操作數(shù)據(jù)庫3.1.2 ODBC連接SQL Servern 配置數(shù)據(jù)源n 建立數(shù)據(jù)庫連接n 操作數(shù)據(jù)庫3.1.3 ODBC連接Oracle3.1.4 ODBC數(shù)據(jù)源自動配置技術(shù)u 數(shù)據(jù)源注冊表組織形式u DOS命令行操作注冊表u Matlab實現(xiàn)數(shù)據(jù)源自動配置1)采用reg add命令實現(xiàn)注冊表修改2)采用reg import命令實現(xiàn)注冊表修改3.2 JDBC技術(shù)3.2.1 JDBC基礎(chǔ)介紹u Jdbc概述u URL、Driver概念介紹3.2.2 JDBC數(shù)據(jù)源配置u Classpath添加u 驅(qū)動添加 版本問題u VQB添加數(shù)據(jù)源u 代碼實現(xiàn)數(shù)據(jù)源配置3.2.3 JDBC連接Access、SQL Server、Oracle等數(shù)據(jù)庫u Accessu SQL Serveru Oracleu MySQL3.3 ADO技術(shù)3.3.1 ADO概述3.3.2 ADODB3.3.3 ADO.NET3.3.4 ADO技術(shù)連接Access、SQL Server、Oracle3.4 VQB快速入門3.5 JDBC、ODBC、ADO比較第三章:Matlab數(shù)據(jù)庫接口技術(shù)3.2 JDBC技術(shù)JDBC(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也是個商標名。本節(jié)先簡單介紹JDBC的基礎(chǔ)知識,然后著重介紹在Matlab平臺下JDBC數(shù)據(jù)源的配置方法,最后通過簡單的實例分析,介紹Matlab平臺下采用JDBC方式連接Access、SQL Server、Oracle等數(shù)據(jù)庫的流程。3.2.1 JDBC基礎(chǔ)介紹JDBC概述JDBC和ODBC一樣為應(yīng)用程序和數(shù)據(jù)庫之間提供了一個交流的橋梁,只是ODBC是用C語言編寫,而JDBC是采用Java語言來編寫。正是如此,基于Java開發(fā)平臺的應(yīng)用程序在連接數(shù)據(jù)庫時,采用JDBC就顯的更加靈活和方便。通過Java API可以實現(xiàn)多種數(shù)據(jù)庫的統(tǒng)一訪問,簡單的說,就是通過JDBC連接數(shù)據(jù)庫,我們只需要關(guān)心數(shù)據(jù)庫的URL和Driver就可以了,其余的事情都可以由JDBC來完成,同時也不要擔(dān)心跨平臺帶來的煩惱。JDBC主要做三件事:與數(shù)據(jù)庫建立連接、發(fā)送SQL語句、處理SQL語句及返回結(jié)果。在用JDBC開發(fā)應(yīng)用程序時,我們也只需要關(guān)注怎樣實現(xiàn)這三件事即可。以下是Java平臺下實現(xiàn)JDBC連接SQL Server數(shù)據(jù)庫的一段示例代碼:第一件事:與數(shù)據(jù)庫建立連接/注冊SQL Server JDBC驅(qū)動程序 String driver = com.microsoft.jdbc.sqlserver.SQLServerDriver; Class.forName(driver); /連接到指定數(shù)據(jù)庫的URL String URL = jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=test; String User =sa; /數(shù)據(jù)庫的用戶名 String Password = ; /登錄密碼 Connection conn = DriverManager.getConnection(URL,User,Password); Statement stmt=conn.createStatement();第二件事:發(fā)送SQL語句 /查詢first_table表 String sql = select * from first_table ; ResultSet rs = stmt.executeQuery(sql);第三件事:處理SQL語句及返回結(jié)果 while(rs.next() System.out.println(rs.getString(title)+rs.getString(URL)+rs.getString(name)+rs.getString(age); 上述代碼講述了Java平臺下JDBC連接和操作數(shù)據(jù)庫的基本步驟,當(dāng)然在Matlab平臺下的具體使用方法會有所不同,具體方法在后文中將詳述。Matlab自帶的數(shù)據(jù)庫工具箱Database Toolbox本身是采用Java語言編寫的,其在各平臺運行模式如下圖所示:圖? 數(shù)據(jù)庫工具箱各平臺驅(qū)動模式在Windows平臺下可以采用JDBC/ODBC橋和單獨使用JDBC驅(qū)動的方式來實現(xiàn)數(shù)據(jù)庫的連接,而在UNIX下則只能使用JDBC驅(qū)動來連接數(shù)據(jù)庫。在Windows平臺下采用Database Toolbox工具箱連接數(shù)據(jù)庫時,采用JDBC驅(qū)動效率會更高,因為其沒有JDBC/ODBC橋這個中間過程。后文將在Matlab平臺下,對比不同的驅(qū)動方式連接各種數(shù)據(jù)庫的效率,以方便讀者針對實際情況選擇合適的驅(qū)動方式。URL、Driver概念介紹使用JDBC時,不同的數(shù)據(jù)庫其URL和Driver均有所不同,同一數(shù)據(jù)庫不同版本之間URL和Driver也可能存在差異,所以在連接數(shù)據(jù)庫之前需要對這兩個概念有所了解,這樣才能準確的使用JDBC連接數(shù)據(jù)庫。本部分內(nèi)容不影響對本節(jié)其他內(nèi)容的理解。URL:統(tǒng)一資源定位符(Uniform / Universal Resource Locator)也被稱為網(wǎng)頁地址,是因特網(wǎng)上標準的資源的地址。其由三部分組成:協(xié)議類型,主機名和路徑及文件名。如:/img/logo.gif 其中http表示網(wǎng)絡(luò)協(xié)議,對應(yīng)的是主機名, /img/logo.gif則表示具體文件的路徑。但是JDBC中的URL與網(wǎng)絡(luò)上常用的URL又有所區(qū)別,它提供了一種標識數(shù)據(jù)庫的方法,以使相應(yīng)的驅(qū)動程序能識別該數(shù)據(jù)庫并與之建立連接。讀者不必深究URL具體是怎么形成的,只需知道URL和Driver需要一起使用,且不同的數(shù)據(jù)庫、不同的版本二者的組合有所不同。JDBC中URL的標準語法如下所示,它由三部分組成,各部分間用冒號分隔:jdbc:這三個部分可分解如下:jdbc協(xié)議,JDBC中URL的協(xié)議總是 jdbc。驅(qū)動程序名或數(shù)據(jù)庫連接機制(這種機制可由一個或多個驅(qū)動程序支持)的名稱。子協(xié)議名的典型示例是 odbc,該名稱是為用于指定 ODBC 風(fēng)格的數(shù)據(jù)資源名稱的 URL 專門保留的。例如,為了通過JDBC-ODBC 橋來訪問某個數(shù)據(jù)庫,可以用如下所示的 URL:jdbc:odbc:Sample上式中,子協(xié)議為odbc,子名稱 Sample 是本地ODBC 數(shù)據(jù)資源。然而,對于遠程服務(wù)器上的數(shù)據(jù)庫需要更多的URL信息。如果數(shù)據(jù)庫是通過Internet 來訪問的,則在 JDBC的URL 中應(yīng)將網(wǎng)絡(luò)地址作為子名稱的一部份包括進去,且必須遵循如下所示的標準 URL 命名約定:/主機名:端口如下所示的SQL Server的JDBC URL:URL=jdbc:sqlserver:/01:1433;DatabaseName=test其中/01:1433用于標識位于網(wǎng)絡(luò)主機/01中的test數(shù)據(jù)庫。(SQL Server一般采用1433端口)Driver:JDBC驅(qū)動程序,每個數(shù)據(jù)庫對應(yīng)的JDBC Driver都有所不同,需要用戶下載并加載。JDBC驅(qū)動有四種類型,在網(wǎng)絡(luò)上下載JDBC驅(qū)動程序文件時會有相關(guān)說明文字指出該驅(qū)動程序是哪種類型的JDBC驅(qū)動,如下圖所示:圖? JDBC驅(qū)動程序類型Type1:JDBC-ODBC橋JDBC-ODBC橋是由SUN公司的JDK提供的標準API,此類驅(qū)動實際是把所有JDBC的調(diào)用傳遞給ODBC,再由ODBC調(diào)用本地數(shù)據(jù)庫驅(qū)動代碼來實現(xiàn)數(shù)據(jù)庫的連接。采用JDBC-ODBC橋幾乎可以訪問所有本地裝有ODBC驅(qū)動的數(shù)據(jù)庫,但此類方法是先調(diào)用ODBC再由ODBC調(diào)用本地數(shù)據(jù)庫接口訪問數(shù)據(jù)庫,所以執(zhí)行效率比較低,對于大數(shù)據(jù)量的存取并不適合,且無法用于Internet應(yīng)用。Matlab自帶的Database Toolbox的ODBC連接方式即采用此類JDBC連接方式對數(shù)據(jù)庫進行訪問,Access的JDBC驅(qū)動也是此類方法。Type2:Java to Native API 本地API驅(qū)動本地API驅(qū)動直接把JDBC調(diào)用轉(zhuǎn)變?yōu)閿?shù)據(jù)庫的標準調(diào)用再去訪問數(shù)據(jù)庫,其需要本地數(shù)據(jù)庫驅(qū)動代碼。此類驅(qū)動比JDBC-ODBC橋已經(jīng)有很大的提高,但是仍依賴數(shù)據(jù)庫廠商提供的代碼庫,無法應(yīng)用于Internet,且效率方面也比類型3和類型4低。Type3:Java to Net 網(wǎng)絡(luò)協(xié)議驅(qū)動此類驅(qū)動是先把數(shù)局庫的訪問請求傳遞給網(wǎng)上的中間件服務(wù)器,中間件服務(wù)器再把請求翻譯為符合數(shù)據(jù)庫規(guī)范的調(diào)用,再把這種調(diào)用傳給數(shù)據(jù)庫服務(wù)器。由于這種驅(qū)動是基于服務(wù)器的,所以,它不需要在客戶端加載數(shù)據(jù)庫廠商提供的代碼庫,執(zhí)行效率較高,同時可以設(shè)計的很小,可以非常快速的加載到內(nèi)存中。也真是因為多了個中間層,其效率還不算最好。Type4:Java to Native Dababase 本地協(xié)議驅(qū)動此類驅(qū)動直接把JDBC調(diào)用轉(zhuǎn)換為符合相關(guān)數(shù)據(jù)庫系統(tǒng)規(guī)范的請求,直接與數(shù)據(jù)庫服務(wù)器通訊,由于完全有Java實現(xiàn),所以能實現(xiàn)平臺獨立性。正是由于直接與數(shù)據(jù)庫服務(wù)器,該類驅(qū)動效率是非常高的;但是對于不同的數(shù)據(jù)庫需要下載不同的驅(qū)動程序。1型驅(qū)動由于執(zhí)行效率不高,只能做為一種過渡方案,對初學(xué)者來說較易理解,實際項目一般不采用此類驅(qū)動。1型和2型驅(qū)動效率較低,使用的較少。對于Internet方面的應(yīng)用必須考慮使用3型和4型驅(qū)動,3型驅(qū)動適合那種需要同時連接多個不同種類的數(shù)據(jù)庫,并且對并發(fā)連接要求高的應(yīng)用,4型驅(qū)動則適合那些連接單一數(shù)據(jù)庫的工作組應(yīng)用。本書主要介紹1型和4型JDBC驅(qū)動。3.2.2 JDBC數(shù)據(jù)源配置本節(jié)以SQL Server 2008數(shù)據(jù)庫為例,詳細介紹Matlab平臺下JDBC數(shù)據(jù)源的配置流程及相關(guān)注意事項。其它數(shù)據(jù)庫的JDBC數(shù)據(jù)源配置流程與此類似。具體配置流程如下圖所示:JDBC驅(qū)動安裝classpath添加VQB配置數(shù)據(jù)源代碼配置數(shù)據(jù)源圖? JDBC數(shù)據(jù)源配置流程JDBC驅(qū)動安裝SQL Server數(shù)據(jù)庫最新版本為SQL Server 2008,SQL Server數(shù)據(jù)庫最新版的JDBC驅(qū)動為Microsoft SQL Server JDBC Driver 3.0,該驅(qū)動可以在微軟主頁上免費下載,地址如下:/downloads/details.aspx?FamilyID=a737000d-68d0-4531-b65d-da0f2a735707&displayLang=zh-cn該JDBC驅(qū)動支持Linux、Unix、Windows 7、Windows Server 2003; Windows Server 2008 R2、Windows Vista、Windows XP等支持Java虛擬機(JVM)的操作系統(tǒng)。支持數(shù)據(jù)庫版本包括SQL Server 2008、SQL Server 2005、SQL Server 2000。使用該驅(qū)動需要安裝Java 5.0及以上的工具包。JDBC驅(qū)動安裝下載并運行名為sqljdbc_3.0.1301.101_chs.exe的文件,按照提示輸入安裝目錄,解壓縮sqljdbc_3.0文件夾,建議把該文件解壓縮到%ProgramFiles%目錄下。在sqljdbc_3.0文件夾的enu子文件夾下有兩個文件sqljdbc.jar和sqljdbc4.jar。為方便Matlab使用SQL Server的JDBC驅(qū)動,把sqljdbc.jar和sqljdbc4.jar復(fù)制到以下地址:$matlabroot/java/jar/toolbox (matlabroot為Matlab的安裝路徑)classpath添加sqljdbc.jar 類庫提供對JDBC 3.0的支持,要求使用5.0版的Java運行時環(huán)境 (JRE)。連接到數(shù)據(jù)庫時,在JRE 6.0上使用 sqljdbc.jar會引發(fā)異常。sqljdbc4.jar 類庫提供對JDBC 4.0的支持,它不僅包括 sqljdbc.jar 的所有功能,還包括新增的 JDBC 4.0 方法。但要求使用6.0或更高版本的Java運行時環(huán)境 (JRE)。在 JRE 1.4或5.0上使用sqljdbc4.jar會引發(fā)異常。注:JRE 1.5和JRE 5.0是對應(yīng)的,二者為同一JRE版本,JRE 1.6和JRE 6.0是對應(yīng)的,二者為同一JRE版本。在使用JDBC驅(qū)動時,需要根據(jù)本機JRE版本的不同來選擇對應(yīng)的文件,如本機JRE版本為JRE 6.0(JRE 1.6)則需選擇sqljdbc4.jar類庫,其余版本則只能選擇sqljdbc.jar 類庫。查看本機JRE版本在Matlab的Command Windows窗口中輸入:ver,則可顯示Matlab的各種版本號其中就包括JRE版本,結(jié)果如下圖所示: ver-MATLAB Version 99 (R2010a)MATLAB License Number: 161051Operating System: Microsoft Windows 7 Version 6.1 (Build 7600)Java VM Version: Java 1.6.0_12-b04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode-從上述結(jié)果中我們看到Java VM Version: Java 1.6.0_12-b04,即本機的JRE版本為JRE 1.6,應(yīng)該選擇sqljdbc4.jar 類庫。添加classpath在Matlab的Command Windows窗口中輸入:edit classpat.txt。則會在Editor窗口中打開classpat.txt,在該文件的最后添加sqljdbc4.jar 類庫的地址即可,如在該文件最后添加:$matlabroot/java/jar/toolbox/sqljdbc4.jar,保存classpat.txt文件。重啟Matlab程序就可以使用JDBC連接數(shù)據(jù)庫了。若classpath.txt中指示的sqljdbc4.jar類庫地址與實際地址不符時,Matlab并不會報錯,但是無法連接到數(shù)據(jù)庫。所以應(yīng)確保classpath.txt中指示的地址與sqljdbc4.jar類庫地址相符,當(dāng)sqljdbc4.jar類庫更改位置時需及時修改classpath.txt的對應(yīng)值。注:在classpath.txt中不能同時添加sqljdbc4.jar和sqljdbc.jar類庫,否則不能正常連接數(shù)據(jù)庫。VQB配置數(shù)據(jù)源u 在Matlab的Command Windows窗口中輸入:querybuilder,打開可視化查詢生成器(Visual Query Builder)。u 點擊Click Query Define JDBC Data Source,彈出如下圖所示的對話框。u 若是第一次建立JDBC數(shù)據(jù)源,則點擊Create New File,在彈出的對話框中選擇適當(dāng)?shù)奈恢帽4鍹AT文件,該文件用于存放JDBC數(shù)據(jù)源的配置信息。u 建立好MAT文件后會在JDBC data source file處顯示該文件的地址,同時對話框中的Data source、Name、Driver、URL都處于可編輯狀態(tài),在對應(yīng)位置填寫好相關(guān)信息后,點擊Add/Update即可保存該JDBC數(shù)據(jù)源信息,如下圖。u 點擊Test,在彈出窗口中輸入數(shù)據(jù)庫對應(yīng)的登錄名和密碼,若一切操作正確會彈出如下圖所示的連接成功對話框,此時表示建立的JDBC數(shù)據(jù)源能正常連接到指定數(shù)據(jù)庫。u 點擊OK保存該JDBC數(shù)據(jù)源配置信息,此時在Visual Query Builder對話框的Data source欄下會看到剛剛建立的JDBC數(shù)據(jù)源,至此JDBC數(shù)據(jù)源建立完成。注意事項:u 數(shù)據(jù)源建立對話框中的Name選項為數(shù)據(jù)源的名稱,可以由用戶任意選取,但是某些數(shù)據(jù)庫的數(shù)據(jù)源名稱必須與所連接的數(shù)據(jù)庫名稱一致。u Driver選項為JDBC驅(qū)動名稱,SQL Server 2008該名稱為:com.microsoft.sqlserver.jdbc.SQLServerDriveru URL選項為指向JDBC驅(qū)動的URL地址,具體概念參見前文,SQL Server 2008中該地址可以表示為:jdbc:sqlserver:/localhost:1433;u 不同數(shù)據(jù)庫,不同版本其Driver名稱和URL連接符都有所不同,具體信息將在后文做詳細介紹。代碼配置數(shù)據(jù)源使用VQB方式建立JDBC數(shù)據(jù)源的過程也可以通過m文件的代碼來實現(xiàn),實現(xiàn)過程主要采用Matlab自帶的Database Toolbox工具箱的database函數(shù)。conn = database(databasename,username,password,driver,databaseurl)databasename指向數(shù)據(jù)庫的數(shù)據(jù)源名稱username數(shù)據(jù)庫登錄名password登錄密碼driverJDBC驅(qū)動程序名稱databaseurlJDBC驅(qū)動URL連接符與采用VQB建立數(shù)據(jù)源一樣,需要設(shè)置正確的driver和url連接符,以下代碼可以實現(xiàn)用代碼的方式配置JDBC數(shù)據(jù)源。%在Matlab用JDBC驅(qū)動連接SQL Server 2008(其他僅連接符url和driver不同)%在運行此段代碼前先確保配置好了JDBC驅(qū)動,方法如下:%1.Microsoft官網(wǎng)下載sqljdbc3.0驅(qū)動Microsoft SQL Server JDBC Driver 2.0.exe(4M左右)%2.解壓后能看到sqljdbc4.jar和sqljdbc.jar文件,針對電腦上JDK的版本選擇導(dǎo)入文件,如JDK6.0導(dǎo)入sqljdbc4.jar%3.在command windows中輸入:edit classpath.txt 打開路徑配置文件 在文件最后一行添加sqljdbc4.jar的完整路徑,%(不能同時加載sqljdbc4.jar和sqljdbc.jar的路徑,否則不能正常連接數(shù)據(jù)庫)。%4.在SQL Server中新建一個登錄名godman,并設(shè)置密碼為godman%5.采用如下代碼在Matlab中連接SQL Server 2008%Godman 2010.12.20 clear;close all%urldatabaseurl=jdbc:sqlserver:/localhost:1433;%driverdriver=com.microsoft.sqlserver.jdbc.SQLServerDriver; username=godman; %登錄名password=godman; %密碼databasename=Test; %數(shù)據(jù)源名稱conn = database(databasename,username,password,driver,databaseurl)在Command Windows窗口運行上述代碼,返回conn的信息如下,當(dāng)Message的內(nèi)容為空時,表示與數(shù)據(jù)庫建立起了正常的JDBC連接,此時就可以對數(shù)據(jù)庫進行讀取和寫入等操作。conn = Instance: Test UserName: godman Driver: com.microsoft.sqlserver.jdbc.SQLServerDriver URL: jdbc:sqlserver:/localhost:1433;DatabaseName=bianshishuju; Constructor: 1x1 com.mathworks.toolbox.database.databaseConnect Message: Handle: 1x1 com.microsoft.sqlserver.jdbc.SQLServerConnection TimeOut: 0 Auto

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論