您的位置:首页 > 数据库 > Oracle

java 调用oracle存储过程传入 数组参数 不用纯jdbc连接

2011-10-09 08:58 1126 查看
搜遍了 大大小小的网页 都没有找到正确结果 苦恼啊

下面是我代码的一段

ArrayDescriptor desc = ArrayDescriptor.createDescriptor("ALIST",connection);

ARRAY aArray = new ARRAY(desc, connection, al);

pproc =(OracleCallableStatement) connection.prepareCall("{

call ATTEND.InsertAttendDataTest(?,?)}");

pproc.setString(1, colstr);

((OracleCallableStatement) pproc).setARRAY(2, aArray);

pproc.execute();

我的connection是jboss的连接池的连接 然后抛出:

java.lang.ClassCastException: org.jboss.resource.adapter.jdbc.WrappedConnection cannot be cast to oracle.jdbc.OracleConnection

但是用纯的jdbc连接 就没有问题 请问如何转换connection 到oracle.jdbc.OracleConnection

而要使用jboss的连接池

问题关键在数据源上,你使用的应该是JBOSS管理的数据源。

单独写一段代码,使用ORACLE管理的数据源,可以解决这个问题,附上代码。

public static OracleDataSource getOracleDataSource()

{

OracleDataSource ds = null;

try

{

ResourceBundle res = null;

res = AccessController

.doPrivileged(new PrivilegedAction<ResourceBundle>()

{

public ResourceBundle run()

{

return ResourceBundle.getBundle("distributeDB");

}

});

String url = res.getString("url");

String user = res.getString("user");

String password = res.getString("password");

ds = new OracleDataSource();

ds.setURL(url);

ds.setUser(user);

ds.setPassword(password);

}

catch (Exception e)

{

e.printStackTrace();

}

return ds;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: