matlab连接MySQL

新近接手到一个任务:用matlab调用数据库。参考了网上一些高手的博客和经验帖,采用matlab连接SQL Server2008,可能是版本问题或者是系统兼容性(我还停留在本世纪初的XP,汗~),老是连接不上,考虑到matlab是采用java编辑的,MySQL和的兼容性可能相对于微软的霸道会好一点,遂采用matlab连接MySQL,结果成果。闲话少叙,直接上料。

由于这里涉及到matlab和MySQL两家子的事,网上的好多资料都是单说一头,顾此失彼,迷惑大众,个人感觉还是一点点从头道来。

Matlab的安装就不多说了,我安装的是matlab7.1。

【第一步】首先是安装MySQLserver(版本是5.6.24)。

在网上下载MySQL server安装包,我下的是http://rj.baidu.com/soft/detail/12585.html?ald这是百度给的下载地址,应该值得信赖吧~

下的是一个zip文件,没有setup.exe,原来MySQL有两个安装版本,这边下的是稍微复杂一点的,需要手动安装,有点吓人,不过仔细按步骤走还是不难的。具体安装过程参考百度经验http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html

安装完后,对于有将近四年没有碰过数据库的我是无奈的,不知道咋整了,所以我加了下面非常必要的第二步。

 

【第二步】然后是检验MySQL,并简单操作一下,以备后验。

第一步中安装时默认root用户密码为空,下面都默认为空,暂不在此添麻烦了。

拿到一个数据库之后第一件事情往往就是建立数据库,建表,再然后实现数据增删改查。鉴于时间长久对sql语言遗忘太多,按主要步骤逐一示例。

A)建立一个数据库

create databasetest;       注意是database而不是datebase,否则报错:

一开始我还查ERROR 1064(42000)是个嘛,哪里有结果哦。。。

B) 建立一张表

在test数据库下建立表

use test

create table student(idint, name varchar(20), age int);

C) 插入数据

insert intostudent values(10,’wang’,20);

     再多插入几条数据,形式一样的啦。

D)查询

select * fromstudent;

 

【第三步】再然后是配置matlab与MySQL连接的JDBC。

A)     安装MySQL驱动程度包(先下载好mysql-connector-java-5.1.7-bin.jar http://download.csdn.net/detail/u011381488/5758623这是CSDN上的,好用,0资源分,真好~)

详细步骤如下:
Step 1: 将mysql-connector-java-5.1.7-bin.jar文件拷贝到......\MATLAB\R2009a\java\jar\toolbox
Step 2: 到......\MATLAB\R2009a\toolbox\local目录下,找到classpath.txt文件,打开,并添加用来加载mysql的jdbc驱动语句:
$matlabroot/java/jar/toolbox/mysql-connector-java-5.1.7-bin.jar    (注意是“/”而不是“\”)
Step 3:重新打开MATLAB即可

B)     在matlab上采用程序连接MySQL

Matlab连接MySQL的函数为:

conn=database('databasename','username','password','driver','databaseurl')
连接成功后,返回连接对象。
参数如下:
    *databasename: 数据库名称.
    *driver: JDBC driver.
    *username and password: 用户名和密码.
    *databaseurl: 类似于jdbc:subprotocol:subname. subprotocol 是数据库类型,

 

具体代码为:

conn =database('test','root','','com.mysql.jdbc.Driver','jdbc:mysql://localhost:3306/test')

{注意:root的密码为空,且需要用localhost,换做127.0.0.1就会连接失败!!!切记}

返回信息为:

conn =

 

       Instance: 'test'

       UserName: 'root'

         Driver: 'com.mysql.jdbc.Driver'

            URL:'jdbc:mysql://localhost:3306/test'

    Constructor: [1x1com.mathworks.toolbox.database.databaseConnect]

        Message: []

         Handle: [1x1com.mysql.jdbc.ConnectionImpl]

        TimeOut: 0

     AutoCommit: 'on'

           Type: 'Database Object'

 

ping一下可得:

ping(conn)

 

ans =

 

       DatabaseProductName: 'MySQL'

    DatabaseProductVersion: '5.6.24'

            JDBCDriverName: 'MySQL-AB JDBCDriver'

         JDBCDriverVersion:'mysql-connector-java-5.1.7 ( Revision:${svn.Revision} )'

    MaxDatabaseConnections: 0

           CurrentUserName: 'root@localhost'

               DatabaseURL:'jdbc:mysql://localhost:3306/test'

    AutoCommitTransactions: 'True'

 

【第四部】最后是在matlab上连接MySQL,并进行校验。

执行命令,下面依葫芦画瓢就行了。

cursorA = exec(conn,'select * fromstudent')

cur = fetch(cursorA)

cur.Data

 

cursorA = exec(conn,'insert into studentvalues(12,"li",30)')     {注意,插入数据中的名字li需要加双引号,是matlab的规则,而MySQL中只需要单引号!’}

cur = fetch(cursorA)

 

 

正文至此完毕。

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

写在后面:

在调试过程中,我在matlab连接SQLServer2008上遇到了不小的困难,按照http://blog.sina.com.cn/s/blog_a4780bcc01011cxq.html做也没连成,报错如下:

databaseurl='jdbc:sqlserver://localhost:1433;databaseName=test';

driver='com.microsoft.sqlserver.jdbc.SQLServerDriver';

username='sa';

password='123';

databasename='test';

con1=database(databasename,username, password, driver, databaseurl);

??? Javaexception occurred:

java.lang.UnsupportedClassVersionError:Bad version number in .class file

 

       atjava.lang.ClassLoader.defineClass1(Native Method)

 

       atjava.lang.ClassLoader.defineClass(Unknown Source)

 

       atjava.security.SecureClassLoader.defineClass(Unknown Source)

 

       atjava.net.URLClassLoader.defineClass(Unknown Source)

 

       atjava.net.URLClassLoader.access$100(Unknown Source)

 

       at java.net.URLClassLoader$1.run(UnknownSource)

 

       atjava.security.AccessController.doPrivileged(Native Method)

 

       atjava.net.URLClassLoader.findClass(Unknown Source)

 

       atjava.lang.ClassLoader.loadClass(Unknown Source)

 

       atsun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

 

       atjava.lang.ClassLoader.loadClass(Unknown Source)

 

       atjava.lang.ClassLoader.loadClass(Unknown Source)

 

       atcom.mathworks.jmi.ClassLoaderManager.loadClass(ClassLoaderManager.java:254)

 

       atcom.mathworks.jmi.ClassLoaderManager.findClass(ClassLoaderManager.java:241)

 

       atcom.mathworks.jmi.Matlab$1.findClass(Matlab.java:366)

 

       atcom.mathworks.util.ClassLoaderBridge.findClass(ClassLoaderBridge.java:24)

 

       atcom.mathworks.toolbox.database.databaseConnect.makeDatabaseConnection(databaseConnect.java:131)

.

 

Error in ==>database.database at 114

connectionVector= makeDatabaseConnection(conn);

 

现在也没搞明白咋回事,是不是“UnsupportedClassVersionError: Bad version number in .class file”的版本问题呢?欢迎交流哈!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值