Java postgres上的错误转换连接

Java postgres上的错误转换连接,java,casting,connection,zk,Java,Casting,Connection,Zk,大家晚安,这是我的第一个问题 我在使用TomcatWebServer运行ZK应用程序时遇到了一些问题 java.lang.ClassCastException:org.postgresql.jdbc4.Jdbc4Connection无法强制转换为controller.connection connection.(connection.java:27) controller.lap_keuangan.lk_controller.preparelistlk(lk_controller.java:34

大家晚安,这是我的第一个问题

我在使用TomcatWebServer运行ZK应用程序时遇到了一些问题

java.lang.ClassCastException:org.postgresql.jdbc4.Jdbc4Connection无法强制转换为controller.connection connection.(connection.java:27) 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;




    }
}
//此处输入命令
公共类lk_控制器扩展了GenericForwardComposer{
私有Listbox listlk;
@凌驾
public void doAfterCompose(组件组件组件)引发异常{
super.doAfterCompose(comp);
preparelistlk();
}
public void preparelistlk()引发异常{
连接c=新连接();
试一试{
l_keuangan lk=新的l_keuangan(c.getConnection());
List llk=lk.getLKeuangan();
ListModelList lml=新的ListModelList(llk,true);
setModel(lml);
setItemRenderer(新的ListitemRenderer()){
@凌驾
公共void呈现(Listitem lslk,对象o)引发异常{
试一试{
tbl_lk tl=(tbl_lk)o;
新的Listcell(ubahtanggal()).setParent(lslk);
新的Listcell(Integer.toString(tl.getSum_debit()).setParent(lslk);
新的Listcell(Integer.toString(tl.getSum_credit()).setParent(lslk);
新的Listcell(Integer.toString(tl.getTotal()).setParent(lslk);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}捕获(例外e){
e、 printStackTrace();
}
}
公共字符串ubahtanggal(){
tbl_lk lk=新的tbl_lk();
DateFormat df=新的简化格式(“YYYY/MM/DD”);
long tanggal=lk.getTanggal().getTime();
字符串tgl=df.format(tanggal);
返回tgl;
}
}
tomcat在第行说了错误: registerDriver(新org.postgresql.Driver()); conn=(连接)DriverManager.getConnection(url、用户、pwd)

我无法将强制转换连接更改为: conn=DriverManager.getConnection(url、用户、pwd)

请有人帮帮我,我昨晚被困了T.T

改变这个:

private connection conn;
为此:

private Connection conn;
conn =  DriverManager.getConnection(url,user,pwd);
这是:

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

此外,在Java中,习惯于使用CamelCase作为类名,类名不应以小写开头,因此最好将类重命名为类似于
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\u控制器
重命名为类似
LKController
的名称。除非在ZK中,约定有些不同。

DriverManager对象返回
java.sql.Connection
的实现。它不会返回您的
控制器.connection
类的实例。
conn
变量的类型应为
java.sql.Connection

请注意:

  • 按照惯例,Java中的类总是以大写字母开头
  • 命名类
    连接
    ,并将其包装为类
    连接
    的对象,这确实令人困惑。如此混乱以至于你被自己的代码弄糊涂了

我猜您的意思是“对这个:conn=DriverManager.getConnection(url,user,pwd);”您的第二个更改在两行中都是相同的。我想你是指conn=(Connection)DriverManager.getConnection(url,user,pwd);天哪,我忘了我的类名和变量了,谢谢你的工作:D@aulia不客气!顺便说一下,我希望这不是你的通用密码!:)@Behrang Saeedzadeh老实说,那不是我的密码先生:在Java中,类名/构造函数通常以大写字母开头,变量和方法以小写字母开头,并且通常不包含下划线