2014-09-13 70 views
-1

我有,我想插入我的DD數據庫/ mm/yyyy格式的日期(25/12/2014)的Java處理日期到數據庫

我的代碼接受一個日期作爲一個對象預訂其領域。 我的代碼在「日期的currentdate = sd.parse(book.GetActualCheckInDate())時會引發錯誤;語句,說:

找到的解析(java.util.Date) 方法java.text中沒有合適的評判。 SimpleDateFormat.parse(java.lang.String,java.text.ParsePosition)不適用(實際和形式參數列表長度不同) 方法java.text.DateFormat.parse(java.lang.String)不適用(實際參數java.util.Date不能通過方法調用轉換)被轉換爲java.lang.String

public int InsertBooking(Booking book) throws SQLException 
    { 
    int retCode = 2; 
    try 
    { 
     SimpleDateFormat sd = new SimpleDateFormat("dd/mm/yyyy"); 
     Date currentDate = sd.parse(book.GetActualCheckInDate()); 
     java.sql.Date sqlDate = new java.sql.Date(currentDate.getTime()); 

     Connection conn = DriverManager.getConnection("jdbc:derby://localhost:1527/HotelDatabase"); 
     Statement stmt = conn.createStatement(); 

     String insertStatements = ("INSERT INTO BOOKING " + 
       "(BOOKINGID, ACTUALCHECKINDATE)" + 
       "VALUES " + "(" + book.GetBookingID() + "," + "'" + sqlDate + "'" + ")"); 
    } 
+3

爲什麼要解析它到'Date',如果它已經是'Date'? – Fildor 2014-09-13 14:29:43

+2

您是否聽說過[PreparedStatement](http://www.mkyong.com/jdbc/jdbc-preparestatement-example-select-list-of-the-records/)? – alfasin 2014-09-13 14:33:49

回答

2

我看到的第一個問題是SimpleDateFormat中的模式。在dd/mm/yyyy 毫米代表分鐘。改用dd/MM/yyyy

第二件事,是您是否試圖將字符串傳遞給數據庫上的日期字段。讓JDBC使用PreparedStatements來解析數據庫的正確格式。

1

什麼book.GetActualCheckInDate()返回? 它米ust是一個有效的日期格式化字符串。因爲解析方法是將字符串格式的日期轉換爲Date Formate中的日期。

相反,如果您希望將日期轉換爲指定格式的日期字符串,那麼您必須使用SimpleDateFormat格式的方法。看看下面的解決方案

import java.util.Date; 
import java.text.SimpleDateFormat; 

public class DateChecker { 
    public static void main(String[] args) { 
     try { 
      String someDate = "22/03/1991"; 
      SimpleDateFormat strToDate = new SimpleDateFormat("dd/MM/yyyy"); 
      Date currentDate = strToDate.parse(someDate); 
      System.out.println("Date is : " + currentDate); 

      String dateFormat = "yyyy-MM-dd HH:mm:ss.SSS"; 
      SimpleDateFormat dateToStr = new SimpleDateFormat(dateFormat); 
      String formattedDate = dateToStr.format(currentDate); 
      System.out.println("Formated Date is : " + formattedDate); 

     } catch (Exception ex) { 
      System.out.println("Exception is : " + ex.getMessage()); 
     } 

    } 
}