2014-09-13 3 views
-1

У меня свидание, что я хотел бы вставить в свою базу данных в дд мм Формат// гггг (25/12/2014)Java обрабатывать даты в базе данных

Мой код принимает объект бронирования с датой в качестве одного его полей. Мой код выдает ошибку на «Дата CurrentDate = sd.parse (book.GetActualCheckInDate()); заявление, которое говорит:

нет подходящего Mothod найдено для синтаксического анализа (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

+2

Вы слышали о [PreparedStatement] (http://www.mkyong.com/jdbc/jdbc-preparestatement-example-select-list-of-the-records/)? – alfasin

ответ

2

Первая проблема, которую я вижу, - это шаблон в SimpleDateFormat. В dd/mm/yyyy мм представляют минуты. Вместо этого используйте dd/MM/yyyy.

Во-вторых, вы пытаетесь передать строку в поле даты в БД. Пусть JDBC выполнит задание, чтобы проанализировать правильный формат для вашей базы данных, используя PreparedStatements.

1

Что book.GetActualCheckInDate() возвращают? It м ust - строка с отформатированной датой. Поскольку метод parse состоит в том, чтобы преобразовать дату в формате строки на сегодняшний день в Date Formate.

Скорее, если вы хотите, чтобы Дата, которая должна быть преобразована в строку даты в указанном 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()); 
     } 

    } 
} 
Смежные вопросы