2012-04-27 41 views
1

我有一個文本框的名字EVENT_DATE具有「日期」內容證日期爲參數

<input style="width: 196px" id="f_date1" name="event_date"/> 

我如何能夠通過參數的文本框的servlet和我在準備好的聲明中使用它。在我的數據庫中,event_date列具有「date」數據類型。

我知道如何做到這一點的字符串(如下圖所示),但我要怎麼做,在日期...

String event_date = request.getParameter("event_date"); 

    try { 
    event_date2 = java.util.Timestamp.parse(event_date); 
    Class.forName("org.postgresql.Driver"); 
    connection = DriverManager.getConnection(connectionURL, "mydb", "pass"); 

    String sql ="insert into prodtracker (event_date) values(?)"; 

    PreparedStatement pst = connection.prepareStatement(sql); 


    pst.setString(1, event_date2); 

回答

2

您可以使用java.text.SimpleDateFormat解析字符串到java.util.Date對象。可以指定不同的日期格式和語言環境來解析。像這樣的例子:

SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy"); 
Date date = format.parse(request.getParameter("event_date")); 

然後你就可以轉換java.util.Datejava.sql.Date要想在PreparedStatement的使用方法:

java.sql.Date sqlDate = new java.sql.Date(date.getTime()); 
PreparedStatement pst = connection.prepareStatement(sql); 
pst.setDate(1, sqlDate); 

這是更好地強加一些檢查的數據格式在客戶端或當它有被髮送到服務器端,以確保它,它解析到日之前符合某些日期格式。

+0

不要忘記添加['format.setLenient(假);'(http://docs.oracle.com/javase/6/docs/api/java/text/DateFormat.html#setLenient(布爾))在解析'String'之前 – 2012-04-28 06:09:53

+0

@LuiggiMendoza:謝謝,這是有用的信息。 – dragon66 2012-04-28 08:10:49