2012-05-21 34 views
0

我想在postgres中显示一个带有“Date”列的表。 我想它与解析字符串到目前为止有关。我尝试使用简单的日期格式,但我不成功。显示数据从日期列 - 解析到日期

我以前实际上发布过类似的问题,并尝试过给出的建议,但我仍然不成功。如果有人能够使用我的代码给我一个样本,我会很感激。

我无法解析字符串到日期并显示数据...下面是我的代码。

myDAO

package source; 

import java.sql.*; 
import java.sql.SQLException; 
import java.text.SimpleDateFormat; 
import java.util.*; 


public class parseDAO { 

    private Database database; 

    public parseDAO(Database database) { 
     this.database = database; 

    } 


    public List<parseBean> results() throws SQLException { 
     Connection connection = null; 
     PreparedStatement statement = null; 
     ResultSet resultSet = null; 

     String querystring = "select * from dateparse"; 
     List<parseBean> result_array = new ArrayList<parseBean>(); 

     try { 

      connection = database.getConnection(); 
      statement = connection.prepareStatement(querystring); 


      resultSet = statement.executeQuery(); 

      while (resultSet.next()) { 

       parseBean resultsarray = new parseBean(); 
        resultsarray.setDate(resultSet.getDate("date")); 
        resultsarray.setName(resultSet.getString("name")); 
        resultsarray.setAddress(resultSet.getString("address")); 

       result_array.add(resultsarray); 
      } 
     } finally { 
      try { resultSet.close(); } catch (SQLException logOrIgnore) {} 
      try { statement.close(); } catch (SQLException logOrIgnore) {} 
      try { connection.close(); } catch (SQLException logOrIgnore) {} 
     } 

     return result_array; 
    } 
} 

myServlet

package source; 

import java.io.IOException; 
import java.sql.SQLException; 
import java.util.*; 
import javax.servlet.ServletException; 
import javax.servlet.http.*; 


public class parseServlet extends HttpServlet { 

    private parseDAO parseDAO; 


    @Override 
    public void init() throws ServletException { 
     String driver = "org.postgresql.Driver"; 
     String url = "jdbc:postgresql://localhost/myDB"; 
     String username = "postgres"; 
     String password = "secret"; 


     Database database = new Database(driver, url, username, password); 
     this.parseDAO = new parseDAO(database); 
    } 


    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 




      try { 
      List<parseBean> result_array = parseDAO.results(); 

      request.setAttribute("result_array", result_array); 
      request.getRequestDispatcher("results.jsp").forward(request, response); 
     } 
      catch (SQLException e) { 
      throw new ServletException("Cannot retrieve areas", e); 
     } 
    } 

} 
+0

数据库中的类型是什么?如果是日期/时间类型,为什么要调用getString? –

+0

那么你为什么要调用getString? –

+0

是这是一个日期...这就是我需要帮助..如果我使用日期来调用它,我得到一个错误。也许你可以用这个 – toink

回答

2

在你parseBean类,改变

private String date; 

private Date date; // Note: java.util.Date, NOT java.sql.Date! 

和更改

resultsarray.setDate(resultSet.getString("date")); 

resultsarray.setDate(resultSet.getDate("date")); 

当JSP呈现这一点,使用JSTL<fmt:formatDate>与指定pattern

<fmt:formatDate value="${parseBean.date}" pattern="yyyy-MM-dd" /> 

相依的具体问题,以及您的Java Naming Conventions以及。类名应以大写字母开头。将parseBean重命名为ParseBean

+0

感谢BalusC,我很高兴你的回复现在正在工作...顺便说一句我有一个后续问题..使用相同的情况下,我怎么能从文本字段添加“日期”参数... – toink