2017-03-11 21 views
0

下面的Java代码工作:无法从MATLAB达到我H2表(但是从Java能)

public class TestH2Schema { 

    public static void main(String[] args) throws SQLException { 

     Driver driver = new org.h2.Driver(); 
     Connection conn = driver.connect("jdbc:h2:file:D:/Users/Dims/Design/TESTS/SVHN_DB/db/svhn", null); 

     Statement stmt = conn.createStatement(); 

     ResultSet rs = stmt.executeQuery("SELECT ID FROM IMAGE WHERE PATH='train/1.png';"); 
     while(rs.next()) { 
     System.out.println(rs.getLong("ID")); 
     } 

     rs.close(); 
     stmt.close(); 
     conn.close(); 

    } 
} 

在Matlab下等效代码不起作用:

driver = org.h2.Driver; 
props = java.util.Properties; 
conn = driver.connect('jdbc:h2:file:D:/Users/Dims/Design/TESTS/SVHN_DB/db/svhn', props); 

stmt = conn.createStatement(); 
query = 'SELECT ID FROM IMAGE WHERE PATH=''train/1.png'''; 
rs = stmt.executeQuery(query); 
while rs.next() 
    rs.getLong('ID') 
end 

rs.close(); 
stmt.close(); 
conn.close(); 

不工作引起的异常

org.h2.jdbc.JdbcSQLException: Table IMAGE not found; SQL statement: 

UPDATE

如果我查询

query = 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' 

我看到表的列表,但不是我的。看起来像Matlab是以某种方式看着不同的位置或某些东西。在“MatlabDatabase”(或其他默认数据源)

回答

0

MATLAB搜索使用自己定义的数据源,你应该宣布它首先

例如:

q1='use your_datasource'; 
q2='select * from INFORMATION_SCHEMA.TABLES'; 

exec(conn,q1); 
exec(conn,q2);