大虾们啊!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");