[SOLVED] Having trouble with SQL Query to JSP Page

Issue

This Content is from Stack Overflow. Question asked by Pherix

First, my apologies for asking what will probably end up being a simple solution question, but I am in school and this has got me stumped a little. I have reached out to my professor, but he is apparently too busy.

So, the setup here is I am trying to write some JAVA to send an SQL query and then return that data back as a table in a JSP page. The code in JAVA itself works fine outputting to the console, but when I attempt to put into the JSP page for a table, it just ignores it.

The following is the code I have for the JSP page:

<%@page import="entd481.week3_v2_miller.DB"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
     <body>
        
<table align="center" cellpadding="5" cellspacing="5" border="1">

<tr bgcolor="#A52A2A">
<td><b>Customer ID</b></td>
<td><b>First Name</b></td>
<td><b>Last Name</b></td>
<td><b>E-Mail</b></td>
<td><b>Phone</b></td>

<%       
String url = "jdbc:mysql://XXX.XXX.XXX.XX:XXXX/XXXXXXXX";
String username = "XXXXXXX";
String password = "XXXXXXXXX";
String query = "SELECT * FROM XXXXXXX.Customers;";
             
try
        {
            Connection conn = DriverManager.getConnection(url, username, password);
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery(query);
            while (rs.next())
            {
                String customerID = rs.getString("Customer_ID");
                String firstName = rs.getString("FirstName");
                String lastName = rs.getString("LastName");
                String email = rs.getString("email");
                String phoneNumber = rs.getString("PhoneNumber"); 
                
                out.print("<tr>");
                out.print("<td>" + customerID + "</td>");
                out.print("<td>" + firstName + "</td>");
                out.print("<td>" + lastName + "</td>");
                out.print("<td>" + email + "</td>");
                out.print("<td>" + phoneNumber + "</td>");
                out.print("</tr>");                 
            }
        st.close();
        conn.close();
        }   
        catch (Exception e)
        {
            System.out.println(e);            
        }
%>
       
    </body>
</html>

Printing out to the console (from the JAVA code standpoint) works great – get all the contents of the DB. But I am stuck as to why when I run this, the resulting page is blank for results, and none of the HTML that I am telling it to out.print is coming through.

Any help from a beginner programmer would be appreciated, as the resources I have in this class are less than helpful.



Solution

Was missing a dependency in the pom.xml file, and resolved with the following:

 <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.39</version>
 </dependency>

Then, had to additionally add the following code on the JSP page for DB connectivity:

 Class.forName("com.mysql.jdbc.Driver");

All seems to be working now. Thanks to @DawoodibnKareem for pointing me in the right direction.


This Question was asked in StackOverflow by Pherix and Answered by Pherix It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.

people found this article helpful. What about you?