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问题 ?
报错是:
java.lang.ClassCastException: oracle.jdbc.driver.OracleResultSetImpl cannot be cast to java.util.ArrayList
我是看一个视频课程 视频课程里面
ArrayList al= (ArrayList) new SqlHelper().executeQuery(sql, paras);
他这样写不会错误但是为什么我会报错??是驱动问题 是JDK问题 ?
解决方案 »
- java怎么往scv文件中追加内容?
- 如何现实多个浏览器,还能共享同一个HttpSession的信息?
- tomcat调用jboss ejb3 出错
- 这个面试题是不是太难了,咋那么多人答不上来
- 只剩30分了..关于JSTL急需高手帮助...
- SpringAOP能解决什么实际问题(提供链接者也有分)?
- 自己做个项目,发现太多的问题,望好心人帮助一下
- JDBC访问mysql 5.0时,字段大小写问题
- dispatch问题
- 使用HibernateTemplate保存数据到数据库,没有报错,正常打印sql语句,但是数据库中没有存入数据
- 大神们帮帮忙啊!这个问题怎么那么神奇,我快崩溃了
- jsp中同时设置page的contentType和pageEncoding会怎样?
要知道原因,你得看SqlHelper的源码,一看就知道了。
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");
//fis = new FileInputStream();
pp.load(fis);
url = pp.getProperty("url");
username = pp.getProperty("username");
driver = pp.getProperty("driver");
password = pp.getProperty("password");
Class.forName(driver);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{ fis.close();}
catch(IOException e) {e.printStackTrace();}
fis = null;//垃圾回收站上收拾
}
}
//得到连接
public static Connection getConnection()
{
try
{ct = DriverManager.getConnection(url,username,password);}
catch(Exception e) {e.printStackTrace();}
return ct;
}
//*************callPro1存储过程函数1*************
public static CallableStatement callPro1(String sql,String[] parameters)
{
try{
ct = getConnection();
cs = ct.prepareCall(sql);
if(parameters!=null){
for(int i=0;i<parameters.length;i++){
cs.setObject(i+1,parameters[i]);
}
}
cs.execute();
}
catch(Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage());}
finally
{ close(rs,cs,ct);}
return cs;
}
//*******************callpro2存储过程2************************
public static CallableStatement callPro2(String sql,String[] inparameters,
Integer[] outparameters)
{
try
{
ct = getConnection();
cs = ct.prepareCall(sql);
if(inparameters!=null)
{
for(int i=0;i<inparameters.length;i++)
{
cs.setObject(i+1,inparameters[i]);
}
}
//cs.registerOutparameter(2,oracle.jdbc.OracleTypes.CURSOR);
if(outparameters!=null)
{
for(int i=0;i<outparameters.length;i++)
{
cs.registerOutParameter(inparameters.length+1+i,outparameters[i]);
}
}
cs.execute();
}
catch(Exception e) {
e.printStackTrace(); throw new RuntimeException(e.getMessage());
}
finally
{
}
return cs;
}
public static ResultSet executeQuery(String sql,String[] parameters)
{
try
{
ct=getConnection();
ps=ct.prepareStatement(sql);
if(parameters!=null)
{
for(int i=0;i<parameters.length;i++)
{
ps.setString(i+1,parameters[i]);
}
}
rs = ps.executeQuery();
}
catch(Exception e)
{
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
finally
{
}
return rs;
}
public static Connection getCt()
{
return ct;
}
public static PreparedStatement getPs()
{
return ps;
}
public static ResultSet getRs()
{
return rs;
}
public static void executeUpdate2(String[] sql,String[][] parameters)
{
try
{
ct = getConnection();
ct.setAutoCommit(false);
for(int i=0;i<sql.length;i++)
{
if(null!=parameters[i])
{
ps = ct.prepareStatement(sql[i]);
for(int j=0;j<parameters[i].length;j++)
{
ps.setString(j+1,parameters[i][j]);
}
ps.executeUpdate();
}
}
ct.commit();
}catch (Exception e)
{
e.printStackTrace();
try
{
ct.rollback();
}
catch (SQLException e1)
{
e1.printStackTrace();
}
throw new RuntimeException(e.getMessage());
}finally
{
close(rs,ps,ct);
}
}
//先写一个update、delete、insert
//sql格式:update 表名 set 字段名 =?where 字段=?
//parameter神应该是(”abc“,23)
public static void executeUpdate(String sql,String[] parameters)
{
try
{
ct=getConnection();
ps = ct.prepareStatement(sql);
if(parameters!=null)
{
for(int i=0;i<parameters.length;i++)
{
ps.setString(i+1,parameters[i]);
}
}
ps.executeUpdate();
}
catch(Exception e)
{
e.printStackTrace();//开发阶段
//抛出异常
//可以处理,也可以不处理
throw new RuntimeException(e.getMessage());
}
finally
{
close(rs,ps,ct);
}
}
public static void close(ResultSet rs,Statement ps,Connection ct)
{
//关闭资源(先开后关)
if(rs!=null)
{
try
{
rs.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
rs=null;
}
if(ps!=null)
{
try
{
ps.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
ps=null;
}
if(null!=ct)
{
try
{
ct.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
ct=null;
}
}
}
public static ResultSet executeQuery(String sql,String[] parameters)
{
try
{
ct=getConnection();
ps=ct.prepareStatement(sql);
if(parameters!=null)
{
for(int i=0;i<parameters.length;i++)
{
ps.setString(i+1,parameters[i]);
}
}
rs = ps.executeQuery();
}
catch(Exception e)
{
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
finally
{
}
return rs;
}重新封装后
public ArrayList executeQuery(String sql,String []paras)
{
ArrayList al=new ArrayList();
try {
ct=getConnection();;
ps=ct.prepareStatement(sql);
//给sql问号赋值
for (int i = 0; i < paras.length; i++)
{
ps.setString(i+1, paras[i]);
}
rs=ps.executeQuery();
//非常有用的
ResultSetMetaData rsmd=rs.getMetaData();
//用法rs可以的到有多少列
int columnNum=rsmd.getColumnCount();
//循环从a1中取出数据封装到ArrayList中
while(rs.next())
{
Object []objects=new Object[columnNum];
for(int i=0;i<objects.length;i++)
{
objects[i]=rs.getObject(i+1); //返回对象数组
}
al.add(objects);
}
return al;
} catch (Exception e)
{
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}finally
{
}