View Single Post
Old Mar 5th, 2007, 9:13 PM   #1
paulchwd
Hobbyist Programmer
 
paulchwd's Avatar
 
Join Date: Mar 2005
Posts: 139
Rep Power: 4 paulchwd is on a distinguished road
Question createStatement() not recognized

Hello All,

I have 2 classes EstablishDBConnection.java which reads the database connection details from a txt file and then my servlet CustomQuery.java which used the other class to establish the connection and do its servlet stuff

But i the second (general) exception in doPost fires


Servlet code:

import java.io.*;
import java.sql.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.ServletResponse;

public class CustomQuery extends HttpServlet
{

	Statement stmt;
	ResultSet rs;
	PrintWriter printer;
	EstablishDBConnetion edbc;

	public void init() throws ServletException
	{
		edbc = new EstablishDBConnetion();
		edbc.establishConnection();

	}

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		
		response.setContentType("text/html");
		printer = response.getWriter();

		String title = "Result from custom query";

		try
		{

			stmt = edbc.createStatementObj(); 
			printer.println("<html><body><font color=black> test </font></body></html>");

			stmt.createStatement(); 

			rs = stmt.executeQuery("SELECT customerID" + 
				                    "  FROM customer");


			while (rs.next())
			{

				printer.println("<html> <head><title>" + title + "</title><br><br><table border=\"0\"> <tr><td>" 
					             + rs.getString(1));

			}

		}

		catch (SQLException sqlx)
		{
			printer.println("SQL Exception");
			sqlx.printStackTrace();
		}

		/*catch (Exception e)
		{
			printer.println("General Exception");
			e.printStackTrace();
		}*/

	}

	public void destroy()
	{
		try
		{
			rs.close();
			stmt.close();
			edbc.con.close();
		}
		catch (SQLException e)
		{
			printer.println("SQL Exception in destroy()");
			e.printStackTrace();
		}
		catch (Exception e)
		{
			printer.println("Exception in destroy()");
			e.printStackTrace();
		}

	}
}

establishConnection code

import java.io.*;
import java.sql.*;
import java.util.StringTokenizer;

class EstablishDBConnetion
{
	Connection con;

	public void establishConnection()
	{

		try
		{
			String dbDriver = "";
			String dbUrl = "";
			String dbName = "";
			String dbUser = "";
			String dbPassword = "";
			String newLine = "";

			BufferedReader fileRead = new BufferedReader(new FileReader("connection.txt"));

			boolean readerStatus = fileRead.ready();

			newLine = fileRead.readLine();

			while (readerStatus)
			{
				StringTokenizer st = new StringTokenizer(newLine, ",");

				while (st.hasMoreTokens())
				{
					dbDriver = st.nextToken();
					dbUrl = st.nextToken();
					dbName = st.nextToken();
					dbUser = st.nextToken();
					dbPassword = st.nextToken();
				}

				readerStatus = fileRead.ready();

			}

			Class.forName(dbDriver);
			String url = dbUrl + dbName;
			System.out.print(url);
			con = DriverManager.getConnection(url, dbUser, dbPassword);



		}

		catch (SQLException sqlx)
		{
			sqlx.printStackTrace();
		}

		catch (IOException e)
		{
			System.out.println("IO exception in establishConnection()");

			e.printStackTrace();
		}

		catch (Exception ex)
		{
			System.out.println("General exception in establishConnection()");
			ex.printStackTrace();
		}
	}

	public Statement createStatementObj() throws SQLException
	{
		Statement stmt = con.createStatement();
		
		return (stmt);
	}

	public static void main(String[] args)
	{
		EstablishDBConnetion edbc = new EstablishDBConnetion();

		edbc.establishConnection();
	}
	
}


Output:




Output:

java.lang.NullPointerException
at EstablishDBConnetion.createStatementObj(EstablishDBConnetion.java:74)
at CustomQuery.doPost(CustomQuery.java:66)
at CustomQuery.doGet(CustomQuery.java:52)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:696)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:417)
at org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:131)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:696)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:198)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:138)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2459)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:132)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:593)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:126)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:595)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:432)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:954)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:619)

Last edited by paulchwd; Mar 5th, 2007 at 10:00 PM.
paulchwd is offline   Reply With Quote