I've been working on a Java Servlet which selects all the data from a table input by the user in index.html. However I've encountered a problem, because I have a DB with numerous different IDs and thus I would like to also show the column names in a table - right now it just shows the data without any column names and I've been seemingly unable to find a solution or come up with one on my own
start.java:
package start;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
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;
/**
* Servlet implementation class Start
*/
@WebServlet("/Start")
public class Start extends HttpServlet {
private static final long serialVersionUID = 1L;
public static void getColumnNames(ResultSet rs) throws SQLException {
if (rs == null) {
return;
}
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
for (int i = 1; i < numberOfColumns + 1; i++) {
String columnName = rsMetaData.getColumnName(i);
String tableName = rsMetaData.getTableName(i);
System.out.println("column name=" + columnName + " table=" + tableName);
}
}
/**
* @see HttpServlet#HttpServlet()
*/
public Start() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse respond) throws ServletException, IOException {
PrintWriter pw = respond.getWriter();
respond.setContentType("text/html");
String tb = request.getParameter("table");
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/music","root","1234");
Statement st = con.createStatement();
System.out.println("connection established successfully!");
ResultSet rs = st.executeQuery("SELECT * FROM " + tb);
pw.println("<table border=1>");
while (rs.next()) {
pw.println("<tr><td>" + rs.getInt(1) + "</td>" + "<td>" + rs.getString(2) + "</td>" + "<td>" + rs.getString(3)
+ "</td></tr>");
}
pw.println("</table>");
pw.close();
} catch (Exception e) {
e.printStackTrace();
}
// TODO Auto-generated method stub
// response.getWriter().append("Served at:
// ").append(request.getContextPath());
}
/**
* @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);
}
}
This is what a result looks like:
Any help would be greatly appreciated!