您好,欢迎来到六九路网。
搜索
您的当前位置:首页Matlab数据库接口技术-JDBC

Matlab数据库接口技术-JDBC

来源:六九路网
第三章 Matlab数据库接口技术

第三章 Matlab数据库接口技术 3.1 ODBC技术

3.1.1 ODBC连接Access  配置数据源  建立数据库连接  操作数据库

3.1.2 ODBC连接SQL Server  配置数据源  建立数据库连接  操作数据库

3.1.3 ODBC连接Oracle

3.1.4 ODBC数据源自动配置技术  数据源注册表组织形式  DOS命令行操作注册表  Matlab实现数据源自动配置

1)采用reg add命令实现注册表修改 2)采用reg import命令实现注册表修改

3.2 JDBC技术

3.2.1 JDBC基础介绍  Jdbc概述  URL、Driver概念介绍 3.2.2 JDBC数据源配置  Classpath添加

 驱动添加 版本问题  VQB添加数据源  代码实现数据源配置

3.2.3 JDBC连接Access、SQL Server、Oracle等数据库 Access  SQL Server  Oracle  MySQL 3.3 ADO技术 3.3.1 ADO概述 3.3.2 ADODB 3.3.3 ADO.NET

3.3.4 ADO技术连接Access、SQL Server、Oracle 3.4 VQB快速入门

3.5 JDBC、ODBC、ADO比较

1

第三章 Matlab数据库接口技术

第三章:Matlab数据库接口技术

3.2 JDBC技术

JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序;同时,JDBC也是个商标名。

本节先简单介绍JDBC的基础知识,然后着重介绍在Matlab平台下JDBC数据源的配置方法,最后通过简单的实例分析,介绍Matlab平台下采用JDBC方式连接Access、SQL Server、Oracle等数据库的流程。

3.2.1 JDBC基础介绍

JDBC概述

JDBC和ODBC一样为应用程序和数据库之间提供了一个交流的桥梁,只是ODBC是用C语言编写,而JDBC是采用Java语言来编写。正是如此,基于Java开发平台的应用程序在连接数据库时,采用JDBC就显的更加灵活和方便。通过Java API可以实现多种数据库的统一访问,简单的说,就是通过JDBC连接数据库,我们只需要关心数据库的URL和Driver就可以了,其余的事情都可以由JDBC来完成,同时也不要担心跨平台带来的烦恼。 JDBC主要做三件事:与数据库建立连接、发送SQL语句、处理SQL语句及返回结果。在用JDBC开发应用程序时,我们也只需要关注怎样实现这三件事即可。以下是Java平台下实现JDBC连接SQL Server数据库的一段示例代码:

第一件事:与数据库建立连接

//注册SQL Server JDBC驱动程序

String driver = \"com.microsoft.jdbc.sqlserver.SQLServerDriver\"; Class.forName(driver); //连接到指定数据库的URL

String URL = \"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test\"; String User =\"sa\"; //数据库的用户名 String Password = \"\"; //登录密码

Connection conn = DriverManager.getConnection(URL,User,Password); Statement stmt=conn.createStatement();

第二件事:发送SQL语句 //查询first_table表

2

第三章 Matlab数据库接口技术

String sql = \" select * from first_table \"; ResultSet rs = stmt.executeQuery(sql);

第三件事:处理SQL语句及返回结果 while(rs.next()) {

System.out.println(rs.getString(\"title\")+rs.getString(\"URL\")+rs.getString(\"name\")+

rs.getString(\"age\")); } 上述代码讲述了Java平台下JDBC连接和操作数据库的基本步骤,当然在Matlab平台下的具体使用方法会有所不同,具体方法在后文中将详述。

Matlab自带的数据库工具箱Database Toolbox本身是采用Java语言编写的,其在各平台运行模式如下图所示:

图? 数据库工具箱各平台驱动模式

在Windows平台下可以采用JDBC/ODBC桥和单独使用JDBC驱动的方式来实现数据库的连接,而在UNIX下则只能使用JDBC驱动来连接数据库。在Windows平台下采用Database Toolbox工具箱连接数据库时,采用JDBC驱动效率会更高,因为其没有JDBC/ODBC桥这个中间过程。

后文将在Matlab平台下,对比不同的驱动方式连接各种数据库的效率,以方便读者针对实际情况选择合适的驱动方式。

URL、Driver概念介绍

使用JDBC时,不同的数据库其URL和Driver均有所不同,同一数据库不同版本之间URL和Driver也可能存在差异,所以在连接数据库之前需要对这两个概念有所了解,这样才能准确的使用JDBC连接数据库。本部分内容不影响对本节其他内容的理解。

URL:统一资源定位符(Uniform / Universal Resource Locator)也被称为网页地址,是因特网上标准的资源的地址。其由三部分组成:协议类型,主机名和路径及文件名。

如:http://www.baidu.com/img/logo.gif

其中http表示网络协议,www.baidu.com对应的是主机名, /img/logo.gif则表示具体文件的路径。

但是JDBC中的URL与网络上常用的URL又有所区别,它提供了一种标识数据库的方法,以使相应的驱动程序能识别该数据库并与之建立连接。读者不必深究URL具体是怎么形成的,只需知道URL和Driver需要一起使用,且不同的数据库、不同的版本二者的组合有所不同。

3

第三章 Matlab数据库接口技术

JDBC中URL的标准语法如下所示,它由三部分组成,各部分间用冒号分隔: jdbc:< 子协议 >:< 子名称 > 这三个部分可分解如下:

jdbc——协议,JDBC中URL的协议总是 jdbc。

<子协议>——驱动程序名或数据库连接机制(这种机制可由一个或多个驱动程序支持)的名称。子协议名的典型示例是 \"odbc\",该名称是为用于指定 ODBC 风格的数据资源名称的 URL 专门保留的。例如,为了通过JDBC-ODBC 桥来访问某个数据库,可以用如下所示的 URL:

jdbc:odbc:Sample

上式中,子协议为\"odbc\",子名称 \"Sample\" 是本地ODBC 数据资源。 然而,对于远程服务器上的数据库需要更多的URL信息。如果数据库是通过Internet 来访问的,则在 JDBC的URL 中应将网络地址作为子名称的一部份包括进去,且必须遵循如下所示的标准 URL 命名约定:

//主机名:端口

如下所示的SQL Server的JDBC URL:

URL='jdbc:sqlserver://192.168.1.101:1433;DatabaseName=test'

其中//192.168.1.101:1433用于标识位于网络主机//192.168.1.101中的test数据库。(SQL Server一般采用1433端口)

Driver:JDBC驱动程序,每个数据库对应的JDBC Driver都有所不同,需要用户下载并加载。

JDBC驱动有四种类型,在网络上下载JDBC驱动程序文件时会有相关说明文字指出该驱动程序是哪种类型的JDBC驱动,如下图所示:

图? JDBC驱动程序类型

Type1:JDBC-ODBC桥

JDBC-ODBC桥是由SUN公司的JDK提供的标准API,此类驱动实际是把所有JDBC的调用传递给ODBC,再由ODBC调用本地数据库驱动代码来实现数据库的连接。采用JDBC-ODBC桥几乎可以访问所有本地装有ODBC驱动的数据库,但此类方法是先调用ODBC再由ODBC调用本地数据库接口访问数据库,所以执行效率比较低,对于大数据量的存取并不适合,且无法用于Internet应用。Matlab自带的Database Toolbox的ODBC连接方式即采用此类JDBC连接方式对数据库进行访问,Access的JDBC驱

4

第三章 Matlab数据库接口技术

动也是此类方法。

Type2:Java to Native API 本地API驱动

本地API驱动直接把JDBC调用转变为数据库的标准调用再去访问数据库,其需要本地数据库驱动代码。此类驱动比JDBC-ODBC桥已经有很大的提高,但是仍依赖数据库厂商提供的代码库,无法应用于Internet,且效率方面也比类型3和类型4低。

Type3:Java to Net 网络协议驱动

此类驱动是先把数局库的访问请求传递给网上的中间件服务器,中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用传给数据库服务器。由于这种驱动是基于服务器的,所以,它不需要在客户端加载数据库厂商提供的代码库,执行效率较高,同时可以设计的很小,可以非常快速的加载到内存中。也真是因为多了个中间层,其效率还不算最好。

Type4:Java to Native Dababase 本地协议驱动

此类驱动直接把JDBC调用转换为符合相关数据库系统规范的请求,直接与数据库服务器通讯,由于完全有Java实现,所以能实现平立性。正是由于直接与数据库服务器,该类驱动效率是非常高的;但是对于不同的数据库需要下载不同的驱动程序。

1型驱动由于执行效率不高,只能做为一种过渡方案,对初学者来说较易理解,实际项目一般不采用此类驱动。1型和2型驱动效率较低,使用的较少。

对于Internet方面的应用必须考虑使用3型和4型驱动,3型驱动适合那种需要同时连接多个不同种类的数据库,并且对并发连接要求高的应用,4型驱动则适合那些连接单一数据库的工作组应用。

本书主要介绍1型和4型JDBC驱动。

3.2.2 JDBC数据源配置

本节以SQL Server 2008数据库为例,详细介绍Matlab平台下JDBC数据源的配置流程及相关注意事项。其它数据库的JDBC数据源配置流程与此类似。具体配置流程如下图所示: VQB配置数据源 JDBC驱动安装 classpath添加 代码配置数据源

图? JDBC数据源配置流程

JDBC驱动安装

SQL Server数据库最新版本为SQL Server 2008,SQL Server数据库最新版的JDBC

驱动为Microsoft SQL Server JDBC Driver 3.0,该驱动可以在微软主页上免费下载,地

5

第三章 Matlab数据库接口技术

址如下:

http://www.microsoft.com/downloads/details.aspx?FamilyID=a737000d-68d0-4531-b65d-da0f2a735707&displayLang=zh-cn

该JDBC驱动支持Linux、Unix、Windows 7、Windows Server 2003; Windows Server 2008 R2、Windows Vista、Windows XP等支持Java虚拟机(JVM)的操作系统。支持数据库版本包括SQL Server 2008、SQL Server 2005、SQL Server 2000。

使用该驱动需要安装Java 5.0及以上的工具包。 JDBC驱动安装

下载并运行名为sqljdbc_3.0.1301.101_chs.exe的文件,按照提示输入安装目录,解压缩sqljdbc_3.0文件夹,建议把该文件解压缩到%ProgramFiles%目录下。在sqljdbc_3.0文件夹的enu子文件夹下有两个文件sqljdbc.jar和sqljdbc4.jar。

为方便Matlab使用SQL Server的JDBC驱动,把sqljdbc.jar和sqljdbc4.jar复制到以下地址:

$matlabroot/java/jar/toolbox (matlabroot为Matlab的安装路径)

classpath添加

sqljdbc.jar 类库提供对JDBC 3.0的支持,要求使用5.0版的Java运行时环境 (JRE)。连接到数据库时,在JRE 6.0上使用 sqljdbc.jar会引发异常。

sqljdbc4.jar 类库提供对JDBC 4.0的支持,它不仅包括 sqljdbc.jar 的所有功能,还包括新增的 JDBC 4.0 方法。但要求使用6.0或更高版本的Java运行时环境 (JRE)。在 JRE 1.4或5.0上使用sqljdbc4.jar会引发异常。

注:JRE 1.5和JRE 5.0是对应的,二者为同一JRE版本,JRE 1.6和JRE 6.0是对应的,二者为同一JRE版本。

在使用JDBC驱动时,需要根据本机JRE版本的不同来选择对应的文件,如本机JRE版本为JRE 6.0(JRE 1.6)则需选择sqljdbc4.jar类库,其余版本则只能选择sqljdbc.jar 类库。

查看本机JRE版本

在Matlab的Command Windows窗口中输入:ver,则可显示Matlab的各种版本号其中就包括JRE版本,结果如下图所示:

>> ver

------------------------------------------------------------------------------------- MATLAB Version 7.10.0.499 (R2010a) MATLAB License Number: 161051

Operating 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

-------------------------------------------------------------------------------------

从上述结果中我们看到Java VM Version: Java 1.6.0_12-b04,即本机的JRE版本为

6

第三章 Matlab数据库接口技术

JRE 1.6,应该选择sqljdbc4.jar 类库。

添加classpath

在Matlab的Command Windows窗口中输入:edit classpat.txt。则会在Editor窗口中打开classpat.txt,在该文件的最后添加sqljdbc4.jar 类库的地址即可,如在该文件最后添加:$matlabroot/java/jar/toolbox/sqljdbc4.jar,保存classpat.txt文件。

重启Matlab程序就可以使用JDBC连接数据库了。若classpath.txt中指示的sqljdbc4.jar类库地址与实际地址不符时,Matlab并不会报错,但是无法连接到数据库。所以应确保classpath.txt中指示的地址与sqljdbc4.jar类库地址相符,当sqljdbc4.jar类库更改位置时需及时修改classpath.txt的对应值。

注:在classpath.txt中不能同时添加sqljdbc4.jar和sqljdbc.jar类库,否则不能正常连接数据库。

VQB配置数据源

 在Matlab的Command Windows窗口中输入:querybuilder,打开可视化查询

生成器(Visual Query Builder)。

 点击Click Query > Define JDBC Data Source,弹出如下图所示的对话框。

 若是第一次建立JDBC数据源,则点击Create New File,在弹出的对话框中选

择适当的位置保存MAT文件,该文件用于存放JDBC数据源的配置信息。  建立好MAT文件后会在JDBC data source file处显示该文件的地址,同时对话

框中的Data source、Name、Driver、URL都处于可编辑状态,在对应位置填写好相关信息后,点击Add/Update即可保存该JDBC数据源信息,如下图。

7

第三章 Matlab数据库接口技术

 点击Test,在弹出窗口中输入数据库对应的登录名和密码,若一切操作正确会

弹出如下图所示的连接成功对话框,此时表示建立的JDBC数据源能正常连接到指定数据库。

 点击OK保存该JDBC数据源配置信息,此时在Visual Query Builder对话框的

Data source栏下会看到刚刚建立的JDBC数据源,至此JDBC数据源建立完成。

注意事项:

 数据源建立对话框中的Name选项为数据源的名称,可以由用户任意选取,但

是某些数据库的数据源名称必须与所连接的数据库名称一致。  Driver选项为JDBC驱动名称,SQL Server 2008该名称为:

com.microsoft.sqlserver.jdbc.SQLServerDriver  URL选项为指向JDBC驱动的URL地址,具体概念参见前文,SQL Server 2008

中该地址可以表示为:

8

第三章 Matlab数据库接口技术

jdbc:sqlserver://localhost:1433;

 不同数据库,不同版本其Driver名称和URL连接符都有所不同,具体信息将

在后文做详细介绍。

代码配置数据源

使用VQB方式建立JDBC数据源的过程也可以通过m文件的代码来实现,实现过程主要采用Matlab自带的Database Toolbox工具箱的database函数。

conn = database('databasename','username','password','driver','databaseurl') databasename——指向数据库的数据源名称 username——数据库登录名 password——登录密码

driver——JDBC驱动程序名称

databaseurl——JDBC驱动URL连接符

与采用VQB建立数据源一样,需要设置正确的driver和url连接符,以下代码可以实现用代码的方式配置JDBC数据源。

%在Matlab用JDBC驱动连接SQL Server 2008(其他仅连接符url和driver不同) %在运行此段代码前先确保配置好了JDBC驱动,方法如下:

%1.Microsoft官网下载sqljdbc3.0驱动——Microsoft SQL Server JDBC Driver 2.0.exe(4M左右)

%2.解压后能看到sqljdbc4.jar和sqljdbc.jar文件,针对电脑上JDK的版本选择导入文件,如JDK6.0导入sqljdbc4.jar

%3.在command windows中输入:edit classpath.txt 打开路径配置文件 在文件最后一行添加sqljdbc4.jar的完整路径,

%(不能同时加载sqljdbc4.jar和sqljdbc.jar的路径,否则不能正常连接数据库)。 %4.在SQL Server中新建一个登录名godman,并设置密码为godman %5.采用如下代码在Matlab中连接SQL Server 2008 %Godman 2010.12.20 tntuyh@163.com clear;close all %url

databaseurl='jdbc:sqlserver://localhost:1433;'; %driver

driver='com.microsoft.sqlserver.jdbc.SQLServerDriver'; username='godman'; %登录名 password='godman'; %密码 databasename='Test'; %数据源名称

conn = database(databasename,username,password,driver,databaseurl)

在Command Windows窗口运行上述代码,返回conn的信息如下,当Message的内容为空时,表示与数据库建立起了正常的JDBC连接,此时就可以对数据库进行读取

9

第三章 Matlab数据库接口技术

和写入等操作。 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 AutoCommit: 'on' Type: 'Database Object'

通过上述建立的JDBC数据源,运行SQL语句从数据源执行的数据源中读取数据,代码如下。

curs=exec(conn,'select * from 处理前数据')

curs=fetch(curs); %将SQL执行结果返回到MATLAB工作空间 data=curs.Data; %得到SQL执行结果中的数据 close(curs); %关闭游标对象

close(conn); %关闭数据库连接对象

3.2.3 JDBC连接Access、SQL Server、Oracle等数据库

由于各种数据库的JDBC驱动机会一样,仅只有Driver和URL连接符有所差别,所以本节内容主要介绍各种数据库不同版本的Driver和URL连接符,数据源建立的其余部分代码参见3.2.2中代码实现数据源配置内容。读者在建立JDBC数据源的过程中遇到任何问题均可通过邮件方式与作者交流,tntuyh@163.com。

Access

微软没有为Access数据库提供专用的Type 4 JDBC驱动,所以只能用Sun公司的JDBC-ODBC桥方式来建立JDBC连接,Access的各种版本其Driver和URL连接符均相同。

%url

databaseurl='jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:\\ test.mdb;'; %driver

driver='sun.jdbc.odbc.JdbcOdbcDriver';

SQL Server

建立JDBC数据源之前,先确保已经下载了微软发布的JDBC驱动程序Microsoft

10

第三章 Matlab数据库接口技术

SQL Server JDBC Driver 3.0(2.0版本也可以)。对于SQL Server不同的版本其Driver和URL连接符有所不同,详细如下所示。

SQL Server 2008 %url

databaseurl='jdbc:sqlserver://localhost:1433;'; %driver

driver='com.microsoft.sqlserver.jdbc.SQLServerDriver'; SQL Server 2005

SQL Server 2000

Oracle

MySQL

11

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务