Aug 132013
 
This entry is part 14 of 20 in the series Matlab数据库基础班

很久没有发新博客文章了,一是自己确实很懒,二是确实很忙很忙,瞎折腾,每天过得很痛苦。言归正传:

【功能需求】

最近遇上一个需求: 某个软件会不断从网络上更新数据,希望能够通过Matlab近乎实时将这些数据读取出来。首先想用COM接口,后来发现自己能力有限做不到。然后再仔细看这个软件,发现它会将从网络上获得的数据(几乎)实时写入一个Access数据库(实际上就是一个MDB文件)。因此,一个简单的办法就是要从Matlab中连接这个Access数据库,从中读取数据即可。

【硬件环境】

有两台电脑,操作系统都是Win7 x64,Matlab也是64位2012A。一台电脑是Office2007,另一台是Office2010,不过都是32位的Office。

【32位Access ODBC驱动使用失败】

由于支持Access的JDBC驱动很难下载——在网络上搜索到的几个都是要钱的。那么直接尝试ODBC连接方式,毕竟Access是M$的产品,同一家人比较好说话。不过,在“管理工具”——数据源(ODBC)中的“添加”选项里面是没有Access驱动的。原因是系统中没有Access的64位驱动。

本着偷懒的原则,首先考虑系统中已经有的32位Access驱动。直接打开32位的数据源设置工具:C:\Windows\SysWOW64\odbcad32.exe 在“添加”里面看到好多好多的驱动,其中就有Access驱动。

但是,当设置好32位的Access ODBC数据源后,在Matlab里面用database()函数打开却出错,提示是说体系结构不符合—— “[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配” 。一看就知道是由于32位的ODBC驱动与64位的Matlab出现冲突。

【64位Access ODBC驱动的安装】

穷则思变,直接下载64位的Access ODBC驱动!还真别说,这个软件真有,还是Microsoft提供的免费软件。下载地址是: http://www.microsoft.com/zh-cn/download/details.aspx?id=13255  (如果这个地址失效,可以直接搜索: “Microsoft 2010 数据库引擎可再发行程序包”从其他地址下载。)

下载时,按照其中提示,选择64位的版本,名字叫做: “AccessDatabaseEngine_X64.exe”。

当时当你安装的时候,会碰上另一个困难——好事多磨!——它会提示你要你先把Office 2007或者32位的Office 2010卸载了,然后才能安装这个软件。 依据网络上一些哥们的说法,可以先卸载Office,再安装这个软件,最后再把原来版本的Office安装回来即可。 ——我只想说,坑爹啊!

但是万能的网友也找到了更方便的办法—— 运行这个软件时加一个 /passive 的参数就可以直接强制安装。具体实现方式这里就不多说,只要对DOS操作稍微懂的人基本就能搞定。

【Matlab连接64位ODBC驱动】

安装好这个软件后,从“管理工具”--数据源(ODBC)中进去,然后“添加”,就可以看到各种驱动,选择其中的“Microsoft Access Driver (*.mdb, *.accdb)”即可,然后在接下来出现的对话框中选择合适的Access数据库文件即可。

连接方法很简单: mydb=database('ODBC数据源名称','用户名','密码'); 即可。

 

 

No related posts.

Series Navigation<< 64位Matlab下的ODBC连接Matlab连接Access数据库文件的JDBC方法 >>
Bookmark/FavoritesSina WeiboGoogle+FacebookQQTwitterYahoo BookmarksBaiduDiggEmailGoogle GmailOutlook.comEvernotePrintAIMLinkedInBlogger PostKindle ItOrkutShare

Related Posts:

  One Response to “64位Matlab连接Access数据库文件”

 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>