public Date getTransactionDate()
{
System.out.println("Enter the transaction Date");
String date = sc.next();
DateFormat df = DateFormat.getDateInstance();
String s1 = df.format(date);
Date d1 = null;
try
{
d1 = (Date) df.parse(s1);
} catch (java.text.ParseException e)
{
// TODO Auto-generated catch block
System.out.println(e.getMessage());
}
return d1;
}
Date d2 = new PreparedStmnt().getTransactionDate();
public static void addTransaction(Connection connection, PreparedStatement preparedStatement , long transac_Id , Date transac_date)
throws SQLException
{
String sqlQuery = "INSERT INTO TRANSACTIONS VALUES (?,?)";
preparedStatement = connection.prepareStatement(sqlQuery);
preparedStatement.setLong(1, transac_Id);
preparedStatement.setDate(2, transac_date);
preparedStatement.executeUpdate();
}
它是一个简单的事务条目,我希望用户在运行时提供日期,然后将其存储在数据库中。但这样做,我得到一个错误说:
线程“main”中的异常java.lang.IllegalArgumentException:无法将给定的Object格式化为日期 at java.text.DateFormat.format(Unknown Source) at java.text.Format.format(Unknown Source) at bluePrint.PreparedStmnt.getTransactionDate(PreparedStmnt.java:76) 在bluePrint.PreparedStmnt.main(PreparedStmnt.java:30)
这是我的第一个项目。所以,请帮帮我。
答案 0 :(得分:1)
你应该使用sc.nextLine()而不是sc.next(),因为它不考虑空间 你可以试试
System.out.println("Enter the transaction Date");
String string = "January 2, 2010";
Scanner sc = new Scanner(System.in);
string = sc.nextLine();
System.out.println(string);
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
try {
Date date = format.parse(string);
System.out.println(date);
} catch (java.text.ParseException e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
}
这对我有用。输入日期格式2010年1月2日