Java ZK选择日期时出错

Java ZK选择日期时出错,java,zk,Java,Zk,我在ZKoss上转换日期框格式时遇到一些问题。日志输出如下所示: input? Fri Jan 04 00:00:00 UTC 2002choosing date test1 org.postgresql.util.PSQLException: ERROR: syntax error at or near "Jan" Position: 49 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryE

我在ZKoss上转换日期框格式时遇到一些问题。日志输出如下所示:

input?
Fri Jan 04 00:00:00 UTC 2002choosing date
test1
org.postgresql.util.PSQLException: ERROR: syntax error at or near "Jan"
  Position: 49
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2096)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1829)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:510)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:386)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271)
    at controller.jurnal.jurnalDAO.getLKeuangan(jurnalDAO.java:46)

//error ommited
这是我的控制器类

public class JournalController extends GenericForwardComposer {

    private Listbox listlk;
    private Datebox datebox;
    private koneksi k;
    private Connection c;
    private SimpleDateFormat sdf;
    private Button pilih;

    public JournalController() {
    }

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

    }

    public void onClick$pilih() throws Exception, SQLException {
        try {
            getListlk();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void getListlk() {
        try {

            Date dates = datebox.getValue();

            System.out.println("input?");
            System.out.println(dates + "choosing date");

            koneksi k = new koneksi();

            jurnalDAO jd = new jurnalDAO(k.getConnection(), dates);
            List<Jurnal_tbl> ltsu = jd.getLKeuangan();
            listlk.setModel(new ListModelList(ltsu, true));

            listlk.setItemRenderer(new ListitemRenderer() {

                public void render(Listitem lstm, Object o) throws Exception {
                    Jurnal_tbl jt = (Jurnal_tbl) o;
                    SimpleDateFormat sdf;
                    sdf = new SimpleDateFormat("yyyy-MM-dd");
                    String tanggal = sdf.format(jt.getTanggal());

                    new Listcell(jt.getKode()).setParent(lstm);
                    new Listcell(jt.getTransaksi()).setParent(lstm);
                    new Listcell(tanggal);
                    new Listcell(jt.getAkun()).setParent(lstm);
                    new Listcell(jt.getDeskripsi()).setParent(lstm);
                    new Listcell(jt.getDC()).setParent(lstm);
                    new Listcell(Double.toString(jt.getAmount())).setParent(lstm);
                    new Listcell(jt.getItem()).setParent(lstm);

                    //     System.out.println("test keluar" + tanggal + jt);
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            k.closeConnection();
        }
    }
}
公共类JournalController扩展了GenericForwardComposer{
私有Listbox listlk;
私人邮箱;
私人科内克西k;
专用连接c;
私人简化格式sdf;
私人按钮;
公共日志管理员(){
}
@凌驾
public void doAfterCompose(组件组件组件)引发异常{
super.doAfterCompose(comp);
}
public void onClick$pilih()引发异常,SQLException{
试一试{
getListlk();
}捕获(例外e){
e、 printStackTrace();
}
}
public void getListlk(){
试一试{
日期=datebox.getValue();
System.out.println(“输入?”);
System.out.println(日期+选择日期);
koneksi k=新的koneksi();
jurnalDAO jd=新的jurnalDAO(k.getConnection(),日期);
List ltsu=jd.getLKeuangan();
setModel(新的ListModelList(ltsu,true));
setItemRenderer(新的ListitemRenderer()){
公共void呈现(Listitem lstm,对象o)引发异常{
Jurnal_tbl jt=(Jurnal_tbl)o;
简化格式sdf;
sdf=新的简化格式(“yyyy-MM-dd”);
字符串tanggal=sdf.format(jt.getTanggal());
新的Listcell(jt.getKode()).setParent(lstm);
新的Listcell(jt.getTransaksi()).setParent(lstm);
新Listcell(tanggal);
新的Listcell(jt.getAkun()).setParent(lstm);
新的Listcell(jt.getDeskripsi()).setParent(lstm);
新的Listcell(jt.getDC()).setParent(lstm);
新的Listcell(Double.toString(jt.getAmount()).setParent(lstm);
新的Listcell(jt.getItem()).setParent(lstm);
//系统输出打印LN(“测试keluar”+tanggal+jt);
}
});
}捕获(例外e){
e、 printStackTrace();
}最后{
k、 closeConnection();
}
}
}
我的DataAccessObject类:

public class jurnalDAO {

    private Connection conn;
    private Date tanggal;

    //    private String pilihbulan;
//    private String pilihtahun;
//    JournalController lkc = new JournalController();
    public jurnalDAO(Connection conn, Date dates) {
        this.conn = conn;
        this.tanggal = dates;
    }

    public List<Jurnal_tbl> getLKeuangan() throws SQLException, Exception {
        PreparedStatement ps = null;

        //      JournalController lkc = new JournalController();

        try {
            List<Jurnal_tbl> llk = new ArrayList<Jurnal_tbl>();
            System.out.println("test1");
            String sql = "select * from public.jurnal where tanggal = " + tanggal;
            ps = conn.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                llk.add(new Jurnal_tbl(rs.getString("kode"), rs.getString("transaksi"), rs.getDate("tanggal"), rs.getString("akun"), rs.getString("Desc"), rs.getString("dc"), rs.getDouble("amt"), rs.getString("item")));
            }

            rs.close();
            return llk;
        } finally{
        }
    }
}
<window title="Untitled Journal" width="auto" height="auto" border="" apply="controller.jurnal.JournalController">

                        <grid>
                            <rows>
                                <row>
                                    <hlayout>
                                        <div>
                                            <datebox id="datebox" cols="16"  format="yyyy-MM-dd"  mold="rounded"/>
                                            <button id="pilih" label="pilih"/>
                                            <button id="cetak" label="Cetak" image="images/Print.png"/>
                                        </div>
                                    </hlayout>
                                </row>
                            </rows>
                        </grid>
                        <listbox id="Listlk" >
                            <listhead>
                                <listheader label="Kode Jurnal"/>
                                <listheader label="No Transaksi"/>
                                <listheader label="Tanggal"/>
                                <listheader label="Account Number"/>
                                <listheader label="Deskripsi"/>
                                <listheader label="Debit/Credit"/>
                                <listheader label="Amount"/>
                                <listheader label="Item No"/>
                            </listhead>
                        </listbox>
                    </window>
公共类jurnalDAO{
专用连接连接器;
私人约会;
//私有字符串pilihbulan;
//私家串毗里塔亨;
//日志控制器lkc=新日志控制器();
公共jurnalDAO(连接连接,日期){
this.conn=conn;
this.tanggal=日期;
}
public List getLKeuangan()抛出SQLException,Exception{
PreparedStatement ps=null;
//日志控制器lkc=新日志控制器();
试一试{
List llk=new ArrayList();
System.out.println(“test1”);
String sql=“select*from public.jurnal,其中tanggal=“+tanggal;
ps=连接准备状态(sql);
结果集rs=ps.executeQuery();
while(rs.next()){
llk.add(新法律文本(rs.getString(“kode”)、rs.getString(“transaksi”)、rs.getDate(“tanggal”)、rs.getString(“akun”)、rs.getString(“Desc”)、rs.getString(“dc”)、rs.getDouble(“amt”)、rs.getString(“项目”);
}
rs.close();
返回llk;
}最后{
}
}
}
最后是我的zul页面:

public class jurnalDAO {

    private Connection conn;
    private Date tanggal;

    //    private String pilihbulan;
//    private String pilihtahun;
//    JournalController lkc = new JournalController();
    public jurnalDAO(Connection conn, Date dates) {
        this.conn = conn;
        this.tanggal = dates;
    }

    public List<Jurnal_tbl> getLKeuangan() throws SQLException, Exception {
        PreparedStatement ps = null;

        //      JournalController lkc = new JournalController();

        try {
            List<Jurnal_tbl> llk = new ArrayList<Jurnal_tbl>();
            System.out.println("test1");
            String sql = "select * from public.jurnal where tanggal = " + tanggal;
            ps = conn.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                llk.add(new Jurnal_tbl(rs.getString("kode"), rs.getString("transaksi"), rs.getDate("tanggal"), rs.getString("akun"), rs.getString("Desc"), rs.getString("dc"), rs.getDouble("amt"), rs.getString("item")));
            }

            rs.close();
            return llk;
        } finally{
        }
    }
}
<window title="Untitled Journal" width="auto" height="auto" border="" apply="controller.jurnal.JournalController">

                        <grid>
                            <rows>
                                <row>
                                    <hlayout>
                                        <div>
                                            <datebox id="datebox" cols="16"  format="yyyy-MM-dd"  mold="rounded"/>
                                            <button id="pilih" label="pilih"/>
                                            <button id="cetak" label="Cetak" image="images/Print.png"/>
                                        </div>
                                    </hlayout>
                                </row>
                            </rows>
                        </grid>
                        <listbox id="Listlk" >
                            <listhead>
                                <listheader label="Kode Jurnal"/>
                                <listheader label="No Transaksi"/>
                                <listheader label="Tanggal"/>
                                <listheader label="Account Number"/>
                                <listheader label="Deskripsi"/>
                                <listheader label="Debit/Credit"/>
                                <listheader label="Amount"/>
                                <listheader label="Item No"/>
                            </listhead>
                        </listbox>
                    </window>

当datebox.getValue()返回2002年1月4日时,我无法转换日期格式。 我希望格式是(yyyy-MM-dd)

谢谢你的帮助:)

这不是ZK的问题。 此代码是您的问题:

String sql = "select * from public.jurnal where tanggal = " + tang gal;
您对java.util.Date#toString()进行了一次转换,它为您提供了一个日期的默认日期表示形式

相反,您必须在sql语句中放入一个参数,然后设置其值:

String sql = "select * from public.jurnal where tanggal = :myDate"
preparedCall = conn.prepareCall(sql);
preparedCall.setDate(":myDate", tanggal);
ResultSet rs = preparedCall.executeQuery();

能否提供您的表架构以及如何保存?我打赌这是你的数据保存问题,而不是你的数据加载问题。