2012-01-07 2 views
1

안녕히 주무세요. 이것이 제 첫 질문입니다. . org.postgresql.jdbc4.Jdbc4Connection가 controller.connection을 controller.connection 캐스팅 할 수 없습니다 (connection.java:27 : 톰캣 웹 서버포스트 그레스에서 오류 캐스팅 연결

java.lang.ClassCastException가와 ZK 응용 프로그램을 실행할 때

는 좀 문제가있어

:) controller.lap_keuangan.lk_Controller.preparelistlk (lk_Controller.java:34) controller.lap_keuangan.lk_Controller.doAfterCompose (lk_Controller.java:30는)

이 내 연결 클래스

package controller; //import ommited public class connection { private static final String url="jdbc:postgresql://192.168.56.101:5432/adempiere"; private static final String user = "postgres"; private static final String pwd = "auliaardy"; private connection conn; public connection()throws Exception{ try { DriverManager.registerDriver(new org.postgresql.Driver()); conn = (connection) DriverManager.getConnection(url,user,pwd); } catch (SQLException e) { System.out.println("Driver tidak ditemukan"+e); } } public Connection getConnection(){ return (Connection) conn; } public void closeConnection(){ try { conn.closeConnection(); } catch (Exception e) { System.out.println("gagal menutup koneksi disebabkan: "+e); } } } 

이것은

//import ommited here 

public class lk_Controller extends GenericForwardComposer { 

    private Listbox listlk; 

    @Override 
    public void doAfterCompose(Component comp) throws Exception { 
     super.doAfterCompose(comp); 
     preparelistlk(); 
    } 

    public void preparelistlk() throws Exception { 
     connection c = new connection(); 
     try { 
      l_keuangan lk = new l_keuangan(c.getConnection()); 
      List<tbl_lk> llk = lk.getLKeuangan(); 
      ListModelList lml = new ListModelList(llk, true); 
      listlk.setModel(lml); 
      listlk.setItemRenderer(new ListitemRenderer() { 

       @Override 
       public void render(Listitem lslk, Object o) throws Exception { 

        try { 

         tbl_lk tl = (tbl_lk) o; 
         new Listcell(ubahtanggal()).setParent(lslk); 
         new Listcell(Integer.toString(tl.getSum_debit())).setParent(lslk); 
         new Listcell(Integer.toString(tl.getSum_credit())).setParent(lslk); 
         new Listcell(Integer.toString(tl.getTotal())).setParent(lslk); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public String ubahtanggal() { 
     tbl_lk lk = new tbl_lk(); 
     DateFormat df = new SimpleDateFormat("YYYY/MM/DD"); 
     long tanggal = lk.getTanggal().getTime(); 
     String tgl = df.format(tanggal); 
     return tgl; 




    } 
} 

바람둥이 말했다 내 컨트롤러 클래스입니다 라인에서 오류 : DriverManager.registerDriver (새 org.postgresql.Driver()); conn = (연결) DriverManager.getConnection (url, user, pwd);

캐스팅 연결을 다음으로 변경하지 못했습니다. conn = DriverManager.getConnection (url, user, pwd);

누군가의 도움이, 내가 밤 TT 이상 붙어있어 바랍니다

+0

Java에서 클래스 이름/생성자는 일반적으로 대문자, 변수 및 메서드로 시작하며 대문자로 시작하며 일반적으로 밑줄을 포함하지 않습니다. –

답변

2

DriverManager 객체는 java.sql.Connection의 구현을 반환합니다. controller.connection 클래스의 인스턴스를 반환하지 않습니다. conn 변수는 java.sql.Connection이어야합니다.

참고 : 자바에서

  • 클래스, 규칙에 따라, 항상 클래스 connection 명명 대문자 문자
  • 로 시작하고, 수업 Connection의 객체를 포장하기, 정말 정말 혼란 . 혼란 스럽기 때문에 자신의 코드로 혼란스러워합니다.
0

변경이 :

private Connection conn; 

을이 : 이것에

conn = (connection) DriverManager.getConnection(url,user,pwd); 

이에

private connection conn; 

:

conn = DriverManager.getConnection(url,user,pwd); 

JDBC의 "Connection" 클래스는 대문자로 시작하고 java.sql 패키지 (정규화 된 클래스 이름이 java.sql.Connection입니다)에 있습니다. 실수로 작성한 클래스의 이름 인 connection 소문자를 사용하고 있습니다. java.sql.Connection을 전송할 수 없습니다.

또한, 자바,이 협약은 소문자로 시작하지 않아야 클래스 이름과 클래스 이름을 낙타 표기법을 사용하는 것입니다, 그래서 ConnectionUtil 또는 ConnectionManager처럼 뭔가 클래스의 이름을 변경하는 것이 좋습니다 : 마찬가지로

// 
// NOTE: must be in ConnectionManager.java 
// 
package controller; 

// imports ommited 


public class ConnectionManager { 

    private static final String url="jdbc:postgresql://192.168.56.101:5432/adempiere"; 
    private static final String user = "postgres"; 
    private static final String pwd = "auliaardy"; 
    private Connection conn; 

    public Connection() throws Exception{ 
     try { 
      DriverManager.registerDriver(new org.postgresql.Driver()); 
      conn = (Connection) DriverManager.getConnection(url,user,pwd); 

     } catch (SQLException e) { 
      System.out.println("Driver tidak ditemukan"+e); 
     } 
    } 

    public Connection getConnection() { 
     return conn; 
    } 

    public void closeConnection() { 
     try { 
      conn.closeConnection(); 
     } catch (Exception e) { 
      System.out.println("gagal menutup koneksi disebabkan: "+e); 
     } 
    } 

} 

lk_Controller의 이름을 LKController으로 변경해야합니다. ZK에서의 협약은 다소 다릅니다.

+0

"conn = DriverManager.getConnection (url, 사용자, PWD); " –

+0

두 번째 변경 사항은 두 줄 모두에서 동일합니다. 나는 당신이 conn = (Connection)을 의미한다고 생각합니다. DriverManager.getConnection (url, user, pwd); –

+0

omg, 나는 내 수업 이름과 변수를 잊어 버렸다. 덕분에 그 작품 : D – aulia

관련 문제