Java ZK选择日期时出错
我在ZKoss上转换日期框格式时遇到一些问题。日志输出如下所示: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
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();
能否提供您的表架构以及如何保存?我打赌这是你的数据保存问题,而不是你的数据加载问题。