有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

SpringJava。lang.ClassCastException:org。阿帕奇。德比。客户是ClientPreparedStatement42不能强制转换为组织。阿帕奇。德比。iapi。sql。准备好的报表

我想创建第一个与ApacheDerby连接的项目

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;
}

}

在我的数据库中,数据源被定义为bean。xml文件。无论是否使用Spring,我都有一个与准备好的语句相关的错误:

线程“main”java中出现异常。RuntimeException:java。lang.ClassCastException:org。阿帕奇。德比。客户是ClientPreparedStatement42无法转换为组织。阿帕奇。德比。iapi。sql。准备好的报表 在JdbcDemo上。刀。JdbcDaoImpl。getCircle(JdbcDaoImpl.java:42) 在JdbcDemo上。JdbcDemo。main(JdbcDemo.java:17) 原因:java。lang.ClassCastException:org。阿帕奇。德比。客户是ClientPreparedStatement42不能强制转换为组织。阿帕奇。德比。iapi。sql。准备好的报表 在JdbcDemo上。刀。JdbcDaoImpl。getCircle(JdbcDaoImpl.java:30) ... 1更多

有人能帮我吗?我可以添加其他类,但我认为probem位于这个类中。我使用的是Apache10.12.1.1。谢谢你的帮助:)


共 (1) 个答案

  1. # 1 楼答案

    看起来您对PreparedStatement使用了错误的导入。您的输入应该是:

    import java.sql.PreparedStatement;
    

    不应该有org.apache.derby.iapi.sql.PreparedStatement的任何导入,这不是您应该在这里使用的东西

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

    PreparedStatement ps = conn.prepareStatement("SELECT * FROM circle where id = ?"); 
    ps.setInt(1, circleId);
    Circle circle = null;
    ResultSet rs = ps.executeQuery();