Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 562
  • Last Modified:

null in resultset

I've a null value in one of the columns in the database

now when i try this...

Arraylist data = new ArrayList();

 while (rs.next()) {
               System.out.println("In the while loop");
               for (int  j = 1 ; j<=numberOfColumns ; j++ ){
                    System.out.println(" j = "+j + rs.getString(j));
                    if(rs.getString(j) != null){
                              data.add(  rs.getString(j));
                    }
                    else{
                         data.add("");
                    }
                                             
               }// end of for loop
                                            
 }// end of while


Now when j =11 i've a null ...i believe my code should work...unfortunately it not processing forward once j reaches 11...


Can some one help me....!!
0
jagadeesh_motamarri
Asked:
jagadeesh_motamarri
  • 7
  • 7
1 Solution
 
hoomanvCommented:
//checking if last column was null...
while(rs.next()){
  String a = rs.getString(1);
  if(rs.wasNull()){
    //last column was null
  }else{
    // last column was NOT null
  }
}
0
 
jagadeesh_motamarriAuthor Commented:
even the intermediate values can be null....i need a generic one
0
 
hoomanvCommented:
To check whether or not a column value is NULL, invoke the result set object's wasNull() method after fetching the value
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
jagadeesh_motamarriAuthor Commented:
it did not work....
0
 
hoomanvCommented:
can i see your code ? and what should be happen to tell its working or not
0
 
jagadeesh_motamarriAuthor Commented:
Sure....here is the code....



package njit.capstone.proj;

import java.io.IOException;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Map;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Vector;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class ReportHandler extends HttpServlet {
     private ServletContext context;
     
     RequestDispatcher dispatcher;
     
     private HashMap errorMap = null;
     
     StringBuffer errorBuffer = new StringBuffer();
     
     private final String errMsg1 = "Session Timed Out";
     
     private String forwardPage = "/login.jsp";
     
     String req_count = "";
     
     private String mon[] = { "jan", "feb", "mar", "apr", "may", "jun", "jul",
               "aug", "sep", "oct", "nov", "dec" };
     
     //error messages
     
     /**
      * Constructor of the object.
      */
     public ReportHandler() {
          super();
     }
     
     /**
      * Initialization of the servlet. <br>
      *
      * @throws ServletException if an error occure
      */
     public void init(ServletConfig config) throws ServletException {
          super.init(config);
          System.out.println("entered init in AddUserHandler");
         
          //error messages
          errorMap = new HashMap();
         
          context = config.getServletContext();
         
     }
     
     /**
      * Destruction of the servlet. <br>
      */
     public void destroy() {
          super.destroy(); // Just puts "destroy" string in log
          // Put your code here
     }
     
     /**
      * The doGet method of the servlet. <br>
      *
      * This method is called when a form has its tag value method equals to get.
      *
      * @param request the request send by the client to the server
      * @param response the response send by the server to the client
      * @throws ServletException if an error occurred
      * @throws IOException if an error occurred
      */
     public void doGet(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {
         
          doPost(request, response);
     }
     
     /**
      * The doPost method of the servlet. <br>
      *
      * This method is called when a form has its tag value method equals to post.
      *
      * @param request the request send by the client to the server
      * @param response the response send by the server to the client
      * @throws ServletException if an error occurred
      * @throws IOException if an error occurred
      */
     public void doPost(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {
          System.out.println("entered doPost in AddUserHandler");
          String start = "";
          String end = "";
          String errors = "";
          StringBuffer errorBuffer = new StringBuffer();
         
          //session validation
          HttpSession session = request.getSession(false);
          String username = "";
          if (session != null) {
               username = (String) session.getAttribute("username");
          }
         
          // if a validsession enter else exit
          if (session == null || username == null || ("").equals(username)) {
               System.out.println(session + username);
               System.out
               .println("Going to login.jsp from dopst in adminMainHandler");
               errorBuffer.append("Session Timed Out");
               forwardPage = "/login.jsp";
               
          } else {
               
               try {
                    C4isrDAO dao = new C4isrDAO();
                    // get the number of pending requests
                    validations valid = new validations();
                    req_count = valid.getReqCount("request_auth");
                   
                    FormValidations isValid = new FormValidations();
                    // perform Validations
                   
                    HashMap formInfo = fetchDetailInformation(request);
                    String start_mm = (String) formInfo.get("start_mm");
                    String start_dd = (String) formInfo.get("start_dd");
                    String start_yy = (String) formInfo.get("start_yy");
                   
                    int start_month = Integer.parseInt(start_mm) - 1;
                    start = start_dd + "/" + mon[start_month] + "/" + start_yy;
                   
                    SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MMM/yyyy");
                    Date start_date = sdf1.parse(start);
                   
                    String end_mm = (String) formInfo.get("end_mm");
                    String end_dd = (String) formInfo.get("end_dd");
                    String end_yy = (String) formInfo.get("end_yy");
                    System.out.println("Start Date: " + end_mm + end_dd + end_yy);
                   
                    int end_month = Integer.parseInt(end_mm) - 1;
                    end = end_dd + "/" + mon[end_month] + "/" + end_yy;
                   
                    SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MMM/yyyy");
                    Date end_date = sdf2.parse(end);
                   
                    errors = isValid.isValidStartEndDate(start_mm, start_dd,
                              start_yy, end_mm, end_dd, end_yy);
                   
                    if (!"".equals(errors) || errors != null)
                         errorBuffer.append(errors);
                   
                    if (!"".equals(errorBuffer.toString())
                              || errorBuffer.toString() == null) {
                         System.out.println("Setting the forwardPage for burffer");
                         forwardPage = "/report.jsp";
                         request.setAttribute("error",errorBuffer.toString());
                         session.setAttribute("username", username);
                         dispatcher = context.getRequestDispatcher(forwardPage);
                         dispatcher.forward(request, response);
                         
                         
                       
                    } else {
                         
                         int count;
                         // First get the maximum count of all the cid for all the suspense from the specified start date to end date
                         
                         count = dao.countMaxChiefs(start, end);
                         
                         System.out.println("Count : " + count);
                         
                         if (count == 0)
                              errorBuffer
                              .append("No Resultset Exists with the specified start and end dates");
                         
                         if (!"".equals(errorBuffer.toString())
                                   || errorBuffer.toString() == null) {
                              System.out
                              .println("Setting the forwardPage for burffer");
                              forwardPage = "/report.jsp";
                              request.setAttribute("error",errorBuffer.toString());
                              session.setAttribute("username", username);
                              dispatcher = context.getRequestDispatcher(forwardPage);
                              dispatcher.forward(request, response);
                         } else {
                               //   List data = new ArrayList();
                                  int numberOfColumns = 0;
                              // query and get the result set
                             
                                     String str ="";
                                  
                              // First prepare the generic query
                             
                              StringBuffer query = new StringBuffer();
                             
                              query.append("select s.sid, s.subject_title, s.tasker, s.received_on, s.taskee, s.final_due_date, s.internal_due_date,s.created_by, s.status, date_format(s.this_created_on, '%b-%e-%Y %r' ) as created_date , s.closed_date, s.closed_by,");
                              for (int i = 1; i <= count; i++) {
                                   
                                   if (i == count)
                                        query.append("r" + i
                                                  + ".response_email from suspenses s ");
                                   else
                                        query.append("r" + i + ".response_email,");
                              }
                             
                              for (int i = 1; i <= count; i++) {
                                   if (i == 1)
                                        query.append("left outer join response r" + i
                                                  + " on s.sid = r" + i + ".sid ");
                                   else
                                        query.append("left outer join response r" + i
                                                  + " on s.sid = r" + i + ".sid and r"
                                                  + i + ".cid > r" + (i - 1) + ".cid ");
                                   
                              }
                             
                              query.append(" group by s.sid ");
                              query.append(" order by ");
                             
                              for (int i = 1; i <= count; i++) {
                                   
                                   if (i == count)
                                        query.append(i);
                                   else
                                        query.append(i + ",");
                                   
                              }
                             
                              System.out.println("Final Query : " + query.toString());
                             
                              mysql_c4isr conn = new mysql_c4isr();
                              ResultSet rs;
                             
                              try {
                                   
                                   rs = conn.executeQuery(query.toString());
                                   ResultSetMetaData metaData = rs.getMetaData();
                                   numberOfColumns = metaData.getColumnCount();
                                   ArrayList data = new ArrayList();
                                   
                                   
                                   System.out.println("No of numberOfColumns "+numberOfColumns);
                                 while (rs.next()) {
                                       System.out.println("In the while loop");
                                      
                                       for (int  j = 1 ; j<=numberOfColumns ; j++ ){
                                             System.out.println(" j = "+j +" - "+ rs.getString(j));
                                             
                                             if(rs.getString(j) == null )
                                                   str = "";
                                             else
                                                   str = rs.getString(j);
                                             
                                             
                                             data.add(str);
                                             
                                             
                                             
                                             
                                       }
                                       System.out.println("out of while : ");
                                            
                                }
                                 
                                 System.out.println("Data is : "+ data);
                                 
                                 if (data == null) {
                                      System.out.println("content is missing.");
                                     
                                 }
                                 response.setContentType("text/html");
                                 
                                 // creating filename
                                 SimpleDateFormat formatter = new SimpleDateFormat(
                                 "yyyyMMddhhmmss");
                                 String timeStamp = formatter.format(new Date());
                                 String fileName = "Resultset" + "_" + timeStamp
                                 + ".txt";
                                 response.setHeader("Content-Disposition",
                                           "attachment; filename=\"" + fileName
                                           + "\";");
                                 
                                 ServletOutputStream out = response
                                 .getOutputStream();
                                 
                                 // print content
                                 
                                 System.out.println("No of numberOfColumns"+numberOfColumns*count);
                                 
                                      for (int i = 0; i <= count*numberOfColumns ; i++)
                                      {
                                            System.out.println(" i = "+i);
                                           try
                                           {
                                                out.print(data.get(i)+ "~");
                                               
                                                if(i!=0 && i%12 == 0 ){
                                                      System.out.println(" i : "+i);
                                                      out.println("\n");
                                                }
                                                      
                                           }
                                           catch (Exception e)
                                           {
                                                e.printStackTrace();
                                           }
                                           
                                           
                                      }
                                 out.flush();
                                 out.close();
                                   
                              } catch (SQLException se) {
                                   
                              } catch (Exception e) {
                                   
                              }
                             
                         }
                         
                    }
                   
               } catch (Exception e) {
                    e.printStackTrace();
               }
               
          }
         
       
     }
     
     public synchronized HashMap fetchDetailInformation(
               HttpServletRequest request) {
         
          HashMap detailMap = new HashMap();
          //     String [] testingcategory = request.getParameterValues("category");                    
          Enumeration e = request.getParameterNames();
         
          while (e.hasMoreElements()) {
               
               String tempStr = (String) (e.nextElement());
               detailMap.put(tempStr, request.getParameter(tempStr));
          }
         
          return detailMap;
     }
     
     public List resultSetToListOfList(ResultSet rs) {
          try {
               // The below just for searches
                 String coldata = "";
               ResultSetMetaData metaData = rs.getMetaData();
               int numberOfColumns = metaData.getColumnCount();
               System.out.println("Number of numberOfColumns : "+numberOfColumns);
               List columnNames = new ArrayList(numberOfColumns);
               // Get the column names
               for (int column = 0; column < numberOfColumns; column++) {
                    columnNames.add(metaData.getColumnLabel(column + 1));
               }
               // Get all rows, but first make the first row the column names
               List rows = new ArrayList();
               rows.add(columnNames);
               while (rs.next()) {
                     List newRow = new ArrayList(numberOfColumns);
                     for (int i = 1; i <= numberOfColumns; i++) {
                           if(rs.getObject(i)== null || "".equals(rs.getObject(i)) )
                                  coldata = "";
                           else
                                  coldata = rs.getObject(i).toString() ;
                     System.out.println("col-"+i+" data-"+coldata);
                       newRow.add(coldata);
                     }
                    rows.add(newRow);
               }
               return rows;
          } catch (Exception e) {
               e.printStackTrace();
               return null;
          }
     }
     
}
0
 
hoomanvCommented:
I cant see where you use wasNull() method
implement it and only paste that portion here

> it did not work....
also tell me what is not working ?
0
 
jagadeesh_motamarriAuthor Commented:
I even place that and worked....it gives me the same result....it stops when j =11 becoz there is a sql date value which is a null

so its getting stopped there..


       str = rs.getString(j);
                                             if(rs.wasNull())
                                                   str = "";
                                             else
                                                   str = rs.getString(j);
                                             
                                             
                                             data.add(str);
                                             
                                             

this is wat i replaced
0
 
hoomanvCommented:
you mean there are more than 11 columns and it stops at column 11 ?
does it throw any exception ?
0
 
jagadeesh_motamarriAuthor Commented:
no exceptions......and yes there are more than 11 columns
0
 
hoomanvCommented:
> no exceptions......and yes there are more than 11 columns

you are catching the exceptions and printing nothing
please print stack trace for both and tell me what exception is thrown

} catch (SQLException se) {
   se.printStackTrace();
} catch (Exception e) {
   e.printStackTrace();
}
0
 
jagadeesh_motamarriAuthor Commented:

 Exception : java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 11 to TIMESTAMP.
java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 11 to TIMESTAMP.
      at com.mysql.jdbc.ResultSet.getTimestampFromString(ResultSet.java:6030)
      at com.mysql.jdbc.ResultSet.getStringInternal(ResultSet.java:5408)
      at com.mysql.jdbc.ResultSet.getString(ResultSet.java:5240)
      at njit.capstone.proj.ReportHandler.doPost(ReportHandler.java:266)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
      at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
      at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
      at java.lang.Thread.run(Thread.java:595)
0
 
jagadeesh_motamarriAuthor Commented:

 Exception : java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 11 to TIMESTAMP.
java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 11 to TIMESTAMP.
      at com.mysql.jdbc.ResultSet.getTimestampFromString(ResultSet.java:6030)
      at com.mysql.jdbc.ResultSet.getStringInternal(ResultSet.java:5408)
      at com.mysql.jdbc.ResultSet.getString(ResultSet.java:5240)
      at njit.capstone.proj.ReportHandler.doPost(ReportHandler.java:266)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
      at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
      at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
      at java.lang.Thread.run(Thread.java:595)
0
 
hoomanvCommented:
TIMESTAMP values may range from the beginning of 1970 to partway
through the year 2037, with a resolution of one second.=20

0000-00-00 00:00:00 cant be converted to TIMESTAMP

use a try catch block where you get the value of this column individualy

learn from here
http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_21302400.html

Im going for the night, bye
0
 
Siva Prasanna KumarPrincipal Solutions ArchitectCommented:
>>java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 11 to TIMESTAMP.

At which line is this converstion happening as i couldn't find the exact location where this is happening.

Thank You.
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 7
  • 7
Tackle projects and never again get stuck behind a technical roadblock.
Join Now