求大神帮助
java.lang.ClassCastException问题
ArrayList al= (ArrayList) new SqlHelper().executeQuery(sql, paras);
这句出错
报错是:
java.lang.
ClassCastException: oracle.jdbc.driver.OracleResultSetImpl cannot be cast to java.util.ArrayList
我是看一个视频课程 视频课程里面
ArrayList al= (ArrayList) new SqlHelper().executeQuery(sql, paras);
他这样写不会错误
但是为什么我会报错??是驱动问题 是JDK问题 ?
------最佳解决方案--------------------错误很明显啊,别人返回的是 OracleResultSetImpl ,是一个游标,而不是一个List , 是不是课程哪里封装过的啊.
------其他解决方案--------------------很清楚的告诉你new SqlHelper().executeQuery(sql, paras)返回的是oracle.jdbc.driver.OracleResultSetImpl类型,你却要将其强制转换成ArrayList,所以报错。
要知道原因,你得看SqlHelper的源码,一看就知道了。
------其他解决方案--------------------今天看了一个动态代理的例子,和你这个很像。要么把全部代码拷起来?
------其他解决方案--------------------
import java.io.FileInputStream;
import
java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import
java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.sql.*;
public class SqlHelper
{
//定义变量
private static Connection ct = null;
//大多数情况下用preparedstatement替代statement
private static PreparedStatement ps = null;
private static ResultSet rs = null;
//连接数据库的参数
private static String url = "";
private static String username = "";
private static String driver = "";
private static String password = "";
private static CallableStatement cs = null;
public static CallableStatement getCs()
{
return cs;
}
private static Properties pp = null;
private static InputStream fis = null;
//加载驱动,只需要一次,用静态代码块
static
{
try
{
//从dbinfo.properties
pp = new Properties();
fis=SqlHelper.class.getClassLoader().getResourceAsStream("dbinfo.properties");
&n