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;
}
下面是我代码的一段
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;
}
相关文章推荐
- java调用oracle存储过程传入参数为数组的处理
- JAVA调用Oracle存储过程传入结构化参数
- JAVA调用ORACLE带数组输入参数和返回游标结果集的存储过程
- Oracle存储过程传入类似java中list、数组类型的参数并使用
- Java调用Oracle集合类型输出参数的存储过程
- clob字段的值插入和查询N种方法【包括java调用存储过程传入clob参数】
- java连接Oracle以及调用其中的存储过程与存储函数
- java调用参数为数组的存储过程
- j2ee调用Oracle带数组参数和游标的存储过程方法
- java ibatis调动oracle传入clob参数的存储过程
- Java调用Oracle集合类型输出参数的存储过程
- JAVA调用存储过程--传入集合参数
- Java调用Oracle集合类型输出参数的存储过程
- hibernate4连接Oracle带out参数的存储过程调用
- Oracle复合类型参数的存储过程以及JDBC调用
- Oracle复合类型参数的存储过程以及JDBC调用
- Java中调用参数是数组的存储过程
- C#调用Oracle的存储过程,其参数为数组类型
- C#调用Oracle的存储过程,其参数为数组类型
- C#调用Oracle的存储过程,其参数为数组类型”中的­Package