0

When i run search.html file it runs successfully but after entering the values the output is as shown in image output please help if possible. Odbc data source name is base and table name is tab, I am using Microsoft Access for data storage Access

database.java

import java.sql.*;
import javax.servlet.annotation.WebServlet;

public class database {

public Connection connect;
public Statement stat;
public String query;
public ResultSet result;

public database()
{
    try
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        connect = DriverManager.getConnection("jdbc:odbc:base","","");
        stat = connect.createStatement();
    }catch(Exception e){}
}

}

search.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Search</title>
</head>
<body>
<form action="search" method="get">
    <input type="number" name="ref" placeholder="reference" />
    <input type="submit" value="search" />
</form>
</body>
</html>

search.java

import java.io.*;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/search")
public class search extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public search() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse   response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    database DB = new database();

    DB.query = "SELECT * FROM tab where ref="
            +request.getParameter("ref");
    out.println("<html><body><table border=\"2\">"
            +"<tr><th>ref</th><th>des</th><th>pri</th><th>cat</th>"
            +"</tr>");

    try
    {
        DB.result=DB.stat.executeQuery(DB.query);
        while(DB.result.next())
        {
            out.println("<tr>"
                    +DB.result.getInt("ref")
                    +DB.result.getString("des")
                    +DB.result.getDouble("pri")
                    +DB.result.getString("cat")
                    +"</tr>");

        }
        out.println("</table></body></html>");
    }catch(Exception e){
        out.println(e.getMessage());
    }
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
}

}
Devansh Jani
  • 57
  • 1
  • 10
  • For some or the other reason I'm not able to view your output image. – Dhaval Simaria Mar 12 '16 at 10:24
  • The exception handling is wrong. You're merely printing the exception message which happens to be `"null"`. Replace `out.println(e.getMessage())` by `throw new ServletException(e)`. You'll get an error page and full stack trace in server log which usually already represents the whole answer in its own. Most likely `DB.stat` returned `null` which causes a `NullPointerException`. – BalusC Mar 12 '16 at 13:24

1 Answers1

-1

Though your following classes look nice but try out the following changes:

database.java

public class database {

public Connection connect;
public String query;
public ResultSet result;

public Connection databaseConnect()
{
    try
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        connect = DriverManager.getConnection("jdbc:odbc:base","","");
        return connect;
    }catch(Exception e){}
}

}

search.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {
try{
Connection con = database.databaseConnect();
Statement stat = con.createStatement();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//database DB = new database();

String query = "SELECT * FROM tab where ref="
        +request.getParameter("ref");
out.println("<html><body><table border=\"2\">"
        +"<tr><th>ref</th><th>des</th><th>pri</th><th>cat</th>"
        +"</tr>");

    result=stat.executeQuery(query);
    while(result.next())
    {
        out.println("<tr>"
                +result.getInt("ref")
                +result.getString("des")
                +result.getDouble("pri")
                +result.getString("cat")
                +"</tr>");

    }
    out.println("</table></body></html>");
}catch(Exception e){
    e.printStackTrace();
}
}
Dhaval Simaria
  • 1,886
  • 3
  • 28
  • 36