哦对了,补充一下
如果把
rs=produce.executeQuery("select * from produce where 
sub_time>'res_begin'");
改为
rs=produce.executeQuery("select * from produce where 
sub_time>'2002-05-30'");
就一点问题都没有,但我需要它是可变的

解决方案 »

  1.   

    rs=produce.executeQuery("select * from produce where 
    sub_time>'res_begin'");
    改为:
    rs=produce.executeQuery("select * from produce where 
    sub_time>'"+res_begin+"'");你把变量res_begin放到""里面,就变成字符串的一部分了。
      

  2.   

    我按你说的改了rs=produce.executeQuery("select * from produce where sub_time>'"+res_begin+"'");
    还是同样的错误
    Error: 500
    Location: /shichang/summoney_2.jsp
    Internal Servlet Error:javax.servlet.ServletException
    at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:460)
    at shichang.summoney_2_3._jspService(summoney_2_3.java:199)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java)
    at org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:574)
    at org.apache.tomcat.core.Handler.invoke(Handler.java:322)
    at org.apache.tomcat.core.Handler.service(Handler.java:235)
    at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:485)
    at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:917)
    at org.apache.tomcat.core.ContextManager.service(ContextManager.java:833)
    at org.apache.tomcat.modules.server.Http10Interceptor.processConnection(Http10Interceptor.java:176)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:494)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:516)
    at java.lang.Thread.run(Thread.java:536)
    Root cause:
    java.lang.NullPointerException
    at shichang.summoney_2_3._jspService(summoney_2_3.java:139)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java)
    at org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:574)
    at org.apache.tomcat.core.Handler.invoke(Handler.java:322)
    at org.apache.tomcat.core.Handler.service(Handler.java:235)
    at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:485)
    at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:917)
    at org.apache.tomcat.core.ContextManager.service(ContextManager.java:833)
    at org.apache.tomcat.modules.server.Http10Interceptor.processConnection(Http10Interceptor.java:176)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:494)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:516)
    at java.lang.Thread.run(Thread.java:536)
      

  3.   

    错误显示依然是NullPointerException这样吧
     String queryStr=select * from produce where 
    sub_time>'"+res_begin+"'";然后用 out.print(queryStr);把字符串打印出来,然后把它帖到数据库的”查询分析器“运行看看能不能查处数据,如果能,就代表有其他的错误。把数据库访问的语句用 /*   */先屏蔽掉,这是我检测错误的方法。
      

  4.   

    看看你传过来的'res_begin'是不是yyyy-mm-dd格式
      

  5.   

    打印出来是这个select * from produce where sub_time>'Thu May 30 00:00:00 CST 2002' 
    数据库中执行不了
    服务器: 消息 295,级别 16,状态 3,行 1
    从字符串转换为 smalldatetime 数据类型时发生语法错误。
    看来的确不是yyyy-MM-dd格式
    那我该怎么办?
      

  6.   

    建议你让用户输入时把年月日分开三个域,这样一来防止输入格式错误,二来方便查找。
    如下:String year=request.getParameter("year");
    String month=request.getParameter("month");
    String day=request.getParameter("day");数据库连接与Statement对象建立部分省略
    ...String queryStr="select * from 你的表名 where year(时间字段)='"+year+"' and month(时间字段)='"+month+"' and day(时间字段)='"+day_"'";ResultSet rs=executeQuery(queryStr);试试看吧,要结合sql server 提供的日期函数
      

  7.   

    'Thu May 30 00:00:00 CST 2002' 这是系统的时间格式吧
    java.util.Date d = new java.util.Date();
    String date = "";
    date = "" + (1900 + d.getYear()) + (1 + d.getMonth()) + d.getDate();
      

  8.   

    rs=produce.executeQuery("select * from produce where sub_time>'2002-05-30'");这句话可以执行。但如果改为String date="2002-05-30";
    rs=produce.executeQuery("select * from produce where sub_time>'date'");就不行了。((rs=produce.executeQuery("select * from produce where sub_time>date");也不行)怎么办?     
      

  9.   

    rs=produce.executeQuery("select * from produce where sub_time>'"+date+"'");