从 org.h2.jdbc.JdbcConnection 获取 olap4j.OlapConnection
Posted
技术标签:
【中文标题】从 org.h2.jdbc.JdbcConnection 获取 olap4j.OlapConnection【英文标题】:Get a olap4j.OlapConnection from a org.h2.jdbc.JdbcConnection 【发布时间】:2012-05-24 16:00:33 【问题描述】:有没有办法从org.h2.jdbc.JdbcConnection
获得olap4j.OlapConnection
?
现在我正在尝试这个(如图所示there):
Class.forName("org.h2.Driver");
Class.forName("mondrian.olap4j.MondrianOlap4jDriver");
Connection conn = DriverManager.getConnection("jdbc:h2:~/test;", "sa", "");
OlapWrapper wrapper = (OlapWrapper) conn;
OlapConnection olapConn = wrapper.unwrap(OlapConnection.class);
但我得到了一个
线程“主”java.lang.ClassCastException 中的异常: org.h2.jdbc.JdbcConnection 不能转换为 org.olap4j.OlapWrapper 在 myprogram.main(Mondrian2H2Test.java:67)
:67 是OlapWrapper wrapper = (OlapWrapper) conn;
编辑:
我也试过这个:
Class.forName("org.h2.Driver");
Class.forName("mondrian.olap4j.MondrianOlap4jDriver");
Connection conn = DriverManager.getConnection("jdbc:h2:~/test;", "sa", "");
OlapConnection olapConn = conn.unwrap(OlapConnection.class);
有了这个结果:
线程“主”java.lang.AbstractMethodError 中的异常: org.h2.jdbc.JdbcConnection.unwrap(Ljava/lang/Class;)Ljava/lang/Object; 在 myprogram.main(Mondrian2H2Test.java:46)
:46 是 OlapConnection olapConn = conn.unwrap(OlapConnection.class);
【问题讨论】:
【参考方案1】:查看MondrianOlap4jDriver javadocs和mailing list,代码似乎是:
import java.sql.Connection;
import java.sql.DriverManager;
import org.olap4j.OlapConnection;
Class.forName("mondrian.olap4j.MondrianOlap4jDriver");
Connection conn = DriverManager.getConnection(
"jdbc:mondrian:" +
"Jdbc=jdbc:h2:~/test; " +
"JdbcUser=sa; " +
"JdbcPassword=; " +
"Catalog=file:/mondrian/demo/FoodMart.xml; " +
"JdbcDrivers=org.h2.Driver");
OlapConnection olapConn = conn.unwrap(OlapConnection.class);
【讨论】:
这对我来说是正确的。蒙德里安绝对可以传递空密码。以上是关于从 org.h2.jdbc.JdbcConnection 获取 olap4j.OlapConnection的主要内容,如果未能解决你的问题,请参考以下文章