String sql = "Insert into PAYRECKON ( payreckonid , money , issuedate , operatorid , serialnumber ,   
              paytypeid ) values ( HIBERNATE_SEQUENCE.NextVal ,"
      + pr.getMoney()
      + " , "
      + pr.getIssuedate()
      + " , "
      + pr.getOperatorid()
      + " , '"
      + pr.getPayreckonid()
      + "' , '"
      + pr.getPaytypeid() + "' )";一开始是这样写的SQL,然后执行时报 “缺少逗号”的错误!String sql = "Insert into PAYRECKON ( payreckonid , money , issuedate , operatorid , serialnumber ,   
              paytypeid ) values ( HIBERNATE_SEQUENCE.NextVal ,"
      + pr.getMoney()
      + " , to_date("
      + pr.getIssuedate()
      + ",'YYYY-MM-DD HH24:MI:SS') , "
      + pr.getOperatorid()
      + " , '"
      + pr.getPayreckonid()
      + "' , '"
      + pr.getPaytypeid() + "' )";然后改成这样,加了一个to_date()函数,执行后报“java.sql.SQLException: ORA-00907: 缺失右括号”错误!这里的pr.getIssuedate() 里放的是 new Date()出来的值。望 高手 解答该如何修改~

解决方案 »

  1.   

    你把java里面dubug 的sql字符串贴出来看看
      

  2.   

    String sql = "Insert into PAYRECKON ( payreckonid , money , issuedate , operatorid , serialnumber ,  
                  paytypeid ) values ( HIBERNATE_SEQUENCE.NextVal ," 
          + pr.getMoney() 
          + " , to_date('"
          + pr.getIssuedate() 
          + "','YYYY-MM-DD HH24:MI:SS') , " 
          + pr.getOperatorid() 
          + " , '" 
          + pr.getPayreckonid() 
          + "' , '" 
          + pr.getPaytypeid() + "' )"; 
      

  3.   


    需要在MYECLISP里设置RESIN,有次整乱过,就没在乱试过。
    new Date()出来的值 , 用你提示的这种TO_DATE()转换时会报 “(完整) 年份值必须介于 -4713 和 +9999 之间”的错误
      

  4.   

    pr.getIssuedate() 你这个可能不是类似 20080910 格式的日期,在java里面要转换一下才行。
    或者把 pr.getIssuedate()值打印出来看看
      

  5.   

    String sql = "Insert into PAYRECKON ( payreckonid , money , issuedate , operatorid , serialnumber , 
                  paytypeid ) values ( HIBERNATE_SEQUENCE.NextVal ,"
          + pr.getMoney()
          + " , to_date('"
          + pr.getIssuedate()
          + "', 'YYYY-MM-DD HH24:MI:SS') , "
          + pr.getOperatorid()
          + " , '"
          + pr.getPayreckonid()
          + "' , '"
          + pr.getPaytypeid() + "' )"; System.out.println(sql); //打出来看一眼,看看日期的值和格式匹配不,必须一定要求是yyyy-mm-dd hh24:mi:ss 的格式才能正常匹配to_date(..., 'YYYY-MM-DD HH24:MI:SS')这样的格式应该是new java.util.Date()出来的日期格式和yyyy-mm-dd hh24...不匹配导致的
      

  6.   

    看了一眼,new Date的日期格式需要转换一下就好了 public static void main(String[] args)  { java.util.Date t = new java.util.Date();
    System.out.println(t);
    System.out.println( new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date()));
    System.out.println( new java.text.SimpleDateFormat("HH:mm:SS").format(new java.util.Date()));

    }output结果:Wed Sep 10 16:36:54 CST 2008
    2008-09-10
    16:36:734
      

  7.   


    由于是NEW DATE()出来的,所以即使是 HH24:MI也不匹配,可以用pr.getIssuedate().toLocalString()转一下,不过这样还是报 缺少括号的错误
      

  8.   

    所以现在  我先是在程序中用 simpledateformat 将它转成 yyyy-MM-dd HH:mm:ss格式的 在往里插入   不在SQL中转换了!