matlab连接sqlite方法

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

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

第二步,在Matlab中加入jar。具体做法是找到"classpath.txt"文件,例如我的这个文件位置是 "D:\Matlab2010B\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('data.xls',curs.Data);

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

No related posts.

//

SQLite是一个很简单的轻量级文件数据库。其数据库就是一个文件,读写数据库也只要用一个可执行文件即可搞定。由于它的方便性,现在的应用已经灰常广泛,例如在PHP(5.0,似乎)中已经内置了对SQlite的支持,而Android中的数据管理用的也是这个。

闲话打住。这个博文主要讲的是在Matlab中用JDBC连接SQLite数据库。

第一步,咱们总得建立一个SQLite数据库吧。建立的办法很简单,首先到 http://www.sqlite.org (或者Google搜索),下载Zip文件,解压缩,其实我们只需要用到其中的 SQLite3.exe 就可以建立一个SQLite数据库了。

打开Windows的命令行,运行
sqlite3 z:/work/test.db
启动了SQLite环境,并同时打开(新建)位于z:/Work目录下的叫做test.db的数据库文件。

然后向该数据库中建立一个table,名字叫做mytst,输入命令:
create table mytst(id integer, name char(30), score1 real, score2 real);
此Table中包含4个Column,注意:最后的分号别丢了。

然后向其中添加两条记录:
insert into mytst values(1,'zhangsan',88.5,90);
insert into mytst values(2,'lisi',98.5,92);

搞定收工,输入
.quit
退出SQLite3环境。此时,这个数据库建立完毕。

第二步,我们需要下载用于连接SQLite的JDBC驱动。到下面的地址:http://www.zentus.com/sqlitejdbc/(或者谷歌SqliteJDBC)

下载其中的"sqlitejdbc-v056.jar",(我下载的是v056版本,可能有新版),保存到硬盘某个地方。

第三步,向Matlab的ClassPath.txt文件中添加sqlitejdbc-v056.jar的路径。具体做法请参考前一个博文"Matlab通过JDBC连接SQL Server"

第四步,打开Matlab,建立一个到SQLite数据库的连接。语法是
conn=database('test.db','','','org.sqlite.JDBC','jdbc:sqlite:z:/work/test.db');

如果 ping(conn) 不出问题的话,这个连接就建立成功了。要读取刚才输入的两条记录,可以使用下面的语句:
curs=exec(conn,'select * from mytst');
curs=fetch(curs);
读取的数据就保存在curs.Data中。

PS:关于性能
由于SQLite直接对文件读写,所以如果你需要一条一条向数据库中写记录的时候最好将此连接的AutoCommit属性设置为Off,语句是:
set(conn,'AutoCommit','off')


/

我们曾经聊过用“sqlitejdbc-v056.jar”文件作为SQLite数据的JAR驱动。在之前各种软件下面用都没有问题,甚至也包括在Win7,64位下面的Matlab64位。但是,今天晚上,当我用这台新装起来的电脑时,就遇上莫名其妙的问题。

系统环境如下:Windows7 Pro,64位, 8GB内存, Matlab2012A,64位。用的是SUN的Java 7 update 5。

故障描述: 使用sqlitejdbc-v056.jar 作为驱动,然后用正常的设置,用database()函数无法连接数据库文件,出错信息有两种, 一种是 'out of memory', 另一种是'No suitable driver found for z:/work/test.db'

由于这个可能涉及到JAVA内部的一些问题,而我并非专业人员,因此就尽量避开,解决办法呢?最好能找个替代当前驱动的新驱动。通过网络上的搜索,我终于在:http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC#Download 找到了一个版本更新一些的JDBC驱动。我使用的是3.7.2版本,文件名是:sqlite-jdbc-3.7.2.jar

下载、加载、连接数据库成功——此JDBC驱动与原来那个jar驱动的调用语法完全相同,已有的代码不需要任何修改。

注意: classpath.txt 中,需要先把文件中原有的  sqlitejdbc-v056.jar 行删除。


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值