Java 尝试插入时出现错误ORA-01843不是有效月份

Java 尝试插入时出现错误ORA-01843不是有效月份,java,oracle,date,gettext,Java,Oracle,Date,Gettext,我需要从JTextField插入日期,如下所示: pst.setString (4, txt_date.getText()); 但留下错误:ORA-01843不是有效月份 在oracle中,数据类型为日期(例如:2014年5月30日) 如何解决这个问题 谢谢 编辑: 我在尝试{insert…etc之前添加了这个,您必须先将字符串格式化为date,就像 SimpleDateFormat formatter = new SimpleDateFormat("dd-mm-yyyy");

我需要从
JTextField
插入日期,如下所示:

pst.setString (4, txt_date.getText());    
但留下错误:ORA-01843不是有效月份

在oracle中,数据类型为日期(例如:2014年5月30日)

如何解决这个问题

谢谢

编辑:


我在尝试{insert…etc

之前添加了这个,您必须先将字符串格式化为date,就像

SimpleDateFormat formatter = new SimpleDateFormat("dd-mm-yyyy");
    String dateInString = "7-07-2014";

    try {

        Date date = formatter.parse(dateInString);
        System.out.println(date);
        System.out.println(formatter.format(date));

    } catch (ParseException e) {
        e.printStackTrace();
    }
相应地匹配您的数据库格式

txt_date.getText()
是字符串值,请尝试使用以下代码:

SimpleDataFormat格式化程序=新的SimpleDataFormat(“dd-mm-yyyy”); String dateInString=txt_date.getText()

或时间戳,如:


您的文本是如何从txt_date.getText()返回的看起来像?为了在preparedStatement中设置变量,您需要将其转换为java.util.Date、java.sql.Date等。为什么yoiu不使用pst.setDate或pst.setTimestamp?@SebriZouhaier字符串不能转换为日期。我有一个用于获取日期的txtfield不是有效的月份…我从txtfield获取数据,然后单击“保存”按钮并插入在to database oracleEdited answer中,再次尝试解决此问题。谢谢。我使用pst.setTimestamp(4,getCurrentTimeStamp());这也很好,因为在添加审阅时,保存保存保存的日期和时间。但是我无法从txtField中获取值。否则我将不得不将数据类型设置为varchar2和date。非常感谢。
txt_date.getText()
    try {

        Date date = formatter.parse(dateInString);
        System.out.println(date);
        System.out.println(formatter.format(date));
        pst.setDate (4, formatter.format(date)); 

    } catch (ParseException e) {
        e.printStackTrace();
    }   
pst.setTimestamp(java.util.Date().getTime());