日期:2014-05-17  浏览次数:20809 次

大虾们啊!jsp连接mysql 想将某个时间段中的数据查询出来
jsp中的有两个js时间控件,通过两个时间控件选择的时间如:2011-07-07 - 2011-07-08 然后将这两个参数传递给java中专门处理数据查询的函数,将再将查询结果返回给jsp显示出来,
可是页面报这行错:Collection arr = list.selectCollection2(begintime,endtime);
哦,我怀疑是arr没有得到数据
报错中还指出:
java.lang.NullPointerException
java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1214)
  .....
所以我怀疑是数据转换的问题,另外,我还有一个问题,我的mysql查询语句这样写稳妥吗?
望有高人指点啊


数据库是:mysql
mysql中时间的格式是:2011/6/13 0:00:00



jsp关键代码如下:

//////以下是两个js时间控件,id分别是time1和time2/////////////
 <form action="test2.jsp" method="post">
  <input name="time1" id="time1".....> —
  <input name="time2" id="time2" .....>
  <input type="submit" value="查询" >
  </form>

  ......
  <jsp:useBean id="list" class="com.fit.jfc.impl.Jdbc" scope="page"/> //Jdbc类是专门处理数据的
  <% 
  String begintime = request.getParameter("time1");
  String endtime = request.getParameter("time2");
  Collection arr = list.selectCollection2(begintime,endtime);
  Iterator it = arr.iterator();
  while(it.hasNext()){ 
  //DailyNewUserCount是一个javabean
  DailyNewUserCount form = (DailyNewUserCount)it.next();
  %> 

Jdbc.java关键代码如下:

public Collection selectCollection2(String t1,String t2) throws ParseException{
Collection list = null;
DateFormat format= new SimpleDateFormat("yyyyMMdd hh:mm:ss");  
Date begin=format.parse(t1);
Date end=format.parse(t2);
//Date begin = java.sql.Date.valueOf(t1);
//Date end = java.sql.Date.valueOf(t2);
 

//List list =new ArrayList();
PreparedStatement pstmt=null;
ResultSet rs=null;
String sql="select DateTime,Login,UserNum from count where DateTime>=begin and DateTime<=end";
try{
pstmt=getConnection().prepareStatement(sql);
rs=pstmt.executeQuery();
list = new ArrayList();
while(rs.next()){
DailyNewUserCount dnuc=new DailyNewUserCount();
dnuc.setDateTime(rs.getDate("DateTime"));
........

list.add(dnuc);
}
.......
return list;
}
 

------解决方案--------------------
DateFormat format= new SimpleDateFormat("yyyyMMdd hh:mm:ss");
改成
SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");