Matlab 自带的 SQLITE 模块 (sqlite4java)

文件型数据库,比较主流的就是微软的access和SQLITE,显然让跨平台的数学软件Matlab去连接微软Office的Access非常不伦不类。 SQLITE自然成为各种OS平台上Matlab用户首推的关系型数据库程序。

无需任何自己找第三方(java等)插件,Matlab整合了来自SQLITE4Java的java模块,https://code.google.com/p/sqlite4java (在这里还有比较详细的各种Java Wrappers for SQLite的对比). 其中sqlite4java最大的优势在于:
1. 为了高效,分别在不同环境下提供不同的链接库,比如dll和so等,并且支持android。
2. 通过statement.bind(index, value)可以实现类似excel的odbc中的parameter操作。

以下是实现同样的抓取,分别在java和Matlab下实现的代码:

in Java:
===============
package test.sqlite;
import com.almworks.sqlite4java.*;
public class test {
 public static void main(String[] args) throws SQLiteException {
     SQLiteConnection db = new SQLiteConnection(new java.io.File("D:\\ts.sqlite"));
     db.open(true);
// section 1: to read
     
     SQLiteStatement st = db.prepare("SELECT hometeam, homescore FROM ts_nba");
     try {
      int i = 0;
      while (st.step()){
      i = i+1;
      System.out.println(i);
      System.out.println(st.columnValue(0));
      System.out.println(st.columnValue(1));
      }
      }
     finally {
       st.dispose();
      }
     
     db.dispose();
     
// // section 2: to create and insert
     
// SQLiteStatement st0 = db.prepare("CREATE TABLE if NOT EXISTS abc (id int, sig varchar(255))");
// SQLiteStatement st1 = null;
// //db.exec("BEGIN TRANSACTION;");
// try {
// System.out.println("begin sql: " + (new Date()).toString());
// st0.step();
//
//
// for (int i = 0; i < 10; i++) {
// st1 = db.prepare("INSERT INTO abc VALUES (?, ?);", true);
// st1.bind(1, i).bind(2, "a");
// st1.step();
// }
// }
// finally {
// st0.dispose();
// st1.dispose();
// System.out.println("end sql: " + (new Date()).toString());
// }
// //db.exec("COMMIT TRANSACTION;");
//
// db.dispose();
     
       
 }
}

in Matlab
=============

javaFileName=java.io.File('F:\ts.sqlite');
db = com.almworks.sqlite4java.SQLiteConnection(javaFileName);
db.open(1);
st = db.prepare('SELECT hometeam, homescore FROM ts_nba where homescore!='''' order by ustime desc limit 10');

i=0;
while st.step()
      i = i+1;
      %System.out.println(i);
      java.lang.System.out.println(st.columnValue(0));
      java.lang.System.out.println(st.columnValue(1));
end

st.dispose();
db.dispose();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值