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

来源:互联网 发布:乐视网络电视官方 编辑:程序博客网 时间:2024/05/19 00:38
 
搜遍了 大大小小的网页 都没有找到正确结果 苦恼啊
下面是我代码的一段
  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;
    }
原创粉丝点击