Mar 272011
 
This entry is part 3 of 20 in the series Matlab数据库基础班

上一篇博客文章写的是通过ODBC连接SQL Server,那种方法存在两大问题,

第一是速度慢,因为Matlab需要用一个叫做JDBC/ODBC Bridge的东西作为桥梁间接地连接ODBC数据库,因此速度肯定比JDBC要慢。如果说慢一点可以容忍的话,那么第二个问题可就忍无可忍了。那就是64位Matlab无法通过ODBC接口访问SQL Server--因为这个悲剧,我还不得不新安装一个32位的Matlab!

既然ODBC那么不爽,我们可以跳出ODBC,而直接使用JDBC来访问数据库。

第一步,从Microsoft.COM 下载Microsoft Server Driver 3.0,下载地址可以将上述关键字扔进Google中搜索就得到了。解压缩可以得到很多文件,我们需要的是其中的sqljdbc4.jar和sqljdbc.jar这两个文件。

其中后者是前者的子集,只要不出问题,直接使用前者就可以了。

第二步,在Matlab中加入jar。具体做法是找到"/2011_03/classpath.txt"文件,例如我的这个文件位置是 "D:\2010B\toolbox\local\classpath.txt",在文件的最后加入sqljdbc4.jar的完整路径,例如我的是: "D:/sqljdbc30/enu/sqljdbc4.jar",注意斜杠怎么写。

第三步,启动Matlab,启动过程中如果没有出错,那么这个JDBC Connector就可以用了。

上面三步就把JDBC Connector建好了。接下来我们就开始连接数据库。

第一步,建立一个到数据库的连接。假设SQL Server地址是 192.30.1.117, 端口是 1433, 数据库名称是RTQ,用户名user,密码 pwd,那么用下面的语句建立一个到该数据库的连接。

conn=database('RTQ','user','pwd','com.microsoft.sqlserver.jdbc.SQLServerDriver',...
'jdbc:sqlserver://192.30.1.117:1433;databaseName=RTQ');

第二步,建立一个查询,假设我们想获得名叫 tbl 的table中的所有顺序,那么可以用:

curs=exec(conn,'select * from tbl');

第三步,获取数据

curs=fetch(curs);

获取的数据就储存在 curs.Data 中。如果我们想将其保存到xls文件中,可以使用

xlswrite('/2011_03/data.xls',curs.Data);

依据测试,在我的Win 7 Professional x64, Matlab 2010B x64 系统上成功获取了数据,但是速度测试不太好做,因为可能与数据库本身的速度有关。我从三个数据库分别下载70万行左右的数据,使用时间在10到25秒不等。

No related posts.

Series Navigation<< 110322-Matlab通过ODBC连接SQL Server建立自己的PostgreSQL数据库 >>
Bookmark/FavoritesSina WeiboGoogle+FacebookQQTwitterYahoo BookmarksBaiduDiggEmailGoogle GmailOutlook.comEvernotePrintAIMLinkedInBlogger PostKindle ItOrkutShare

Related Posts:

  4 Responses to “110327-Matlab通过JDBC连接SQL Server”

  1. 请问第二步的时候classpath无法保存是什么问题啊?

  2. 谢谢你的博文,我也是win7x64,旗舰版, matlabx64 ,mssql2008 64,但是怎么都连接不上?jdbc ,odbc32 这个问题都快捣鼓一个月了., 我就单机用的 mssql2008 地址 192.168.8.102:1433 , localhost , local , . :1433 ,都试过了,还是不行? 极郁闷. 可以连mysql , 也可以matlab32 位连接 mssql , 你可以帮忙远程看一下吗?

    • 抱歉,远程可能不方便。你可以先看看连接的那个Message返回什么信息,这个出错信息一般都帮助很大的。

 Leave a Reply

(required)

(required)


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>