java.lang.ClassCastException:org.apache.derby.client.am.ClientPreparedStatement42无法强制转换为org.apache.derby.iapi.sql.PreparedStatement

时间:2016-04-30 13:00:20

标签: java spring apache derby

我想创建我的第一个与apache-derby连接的项目。

public Circle getCircle(int circleId){

    Connection conn = null;

    try {

     conn = dataSource.getConnection();

    **PreparedStatement ps =     (PreparedStatement) conn.prepareStatement("SELECT * FROM circle where id = ?"); 
     ((java.sql.PreparedStatement) ps).setInt(1,circleId);
    Circle circle = null;
    ResultSet rs =  ((java.sql.PreparedStatement) ps).executeQuery();
    if(rs.next()){
        circle = new Circle(circleId,rs.getString("name"));
        }**
rs.close();
    ((Connection) ps).close();
return circle;
}
catch (Exception e) {
    throw new RuntimeException(e);
    }
finally{
    try{
    conn.close();
    }catch (SQLException e){}
}
    }


public DataSource getDataSource() {
    return dataSource;
}
public void setDataSource(DataSource dataSource) {
    this.dataSource = dataSource;
}

}

dataSource在我的.xml文件中定义为bean。是否使用Spring我有一个与准备好的语句相关的错误:

线程“main”中的异常java.lang.RuntimeException:java.lang.ClassCastException:org.apache.derby.client.am.ClientPreparedStatement42无法强制转换为org.apache.derby.iapi.sql.PreparedStatement     在JdbcDemo.dao.JdbcDaoImpl.getCircle(JdbcDaoImpl.java:42)     在JdbcDemo.JdbcDemo.main(JdbcDemo.java:17) 引起:java.lang.ClassCastException:org.apache.derby.client.am.ClientPreparedStatement42无法强制转换为org.apache.derby.iapi.sql.PreparedStatement     在JdbcDemo.dao.JdbcDaoImpl.getCircle(JdbcDaoImpl.java:30)     ......还有1个

有人可以帮助我吗?我可以添加其他类,但我认为probem位于此类。我正在使用apache 10.12.1.1。谢谢你的帮助:))

1 个答案:

答案 0 :(得分:1)

您似乎正在使用PreparedStatement的错误导入。您的导入应该是:

import java.sql.PreparedStatement;

{<1}}应该,这不是你应该在这里使用的。

您的代码中不需要任何强制转换:

org.apache.derby.iapi.sql.PreparedStatement