apache-derbyに接続した私の最初のプロジェクトを作成したいと思います。java.lang.ClassCastException:org.apache.derby.client.am.ClientPreparedStatement42をorg.apache.derby.iapi.sql.PreparedStatementにキャストできません
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;
}
}
データソースは、私の.xmlファイル内のBeanとして定義されます。私は準備されたステートメントを使用して接続エラーを持って春を使用するかどうか:java.lang.ClassCastExceptionが::スレッド「メイン」java.lang.RuntimeExceptionで
例外をorg.apache.derby.client.am.ClientPreparedStatement42にすることはできませんjava.langで:によって引き起こさJdbcDemo.JdbcDemo.main(JdbcDemo.java:17) でJdbcDemo.dao.JdbcDaoImpl.getCircle(JdbcDaoImpl.java:42) でorg.apache.derby.iapi.sql.PreparedStatement にキャスト.ClassCastException:org.apache.derby.client.am.ClientPreparedStatement42をorg.apache.derby.iapi.sql.PreparedStatementにキャストできません JdbcDemo.dao.JdbcDaoImpl.getCircle(JdbcDaoImpl.java:30) ... 1 more
誰かが私を助けることができますか?私は他のクラスを追加することができますが、私はprobemがこのクラスに位置していると思います。私はApache 10.12.1.1を使用しています。ありがとうございました。
あなたの答えをありがとうございました。右のインポート後、私は次の問題があります:スレッド "main"の例外java.lang.RuntimeException:java.lang.ClassCastException:org.apache.derby.client.am.ClientPreparedStatement42をjava.sql.Connectionにキャストできません \t JdbcDemo java.lang.ClassCastExceptionが:.dao.JdbcDaoImpl.getCircle(JdbcDaoImpl.java:43)JdbcDemo.JdbcDemo.main(JdbcDemo.java:17) で\tにより引き起こさorg.apache.derby.client.am.ClientPreparedStatement42できませんJdbcDemo.dao.JdbcDaoImpl.getCircle(JdbcDaoImpl.java:39) \t ... 1もっと – sianek
あなたの '((接続)、PS)でのjava.sql.Connection \tにキャストすること.close()'は完全に間違っています。 'ps'は' PreparedStatement'で、 'Connection'ではなく、単に' ps.close() 'を呼び出します。 SQL操作でキャストを行う必要はありません。 –
それは動作します:)ありがとう – sianek