2017-03-11 24 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);