Build a Servlet-Based Application that Executes SQL Statements Against a Database - The Code for the Utility Class (Page 6 of 7 )
The code for the utility class named SQLUtil is shown below. This class contains a static method named getHtmlRows that is called by the servlet shown earlier. Like the SQLGatewayServlet, this class is stored in the murach.sql package.
package murach.sql;
import java.sql.*;
public class SQLUtil{
The getHtmlRows method accepts a ResultSet object and returns a String object that contains the HTML code for all of the column headings and rows in the result set. To build the information for that String object, the getHtmlRows declares a StringBuffer object named htmlRows and appends data to it as the method is executed. At the end of the method, the toString method is used to convert the StringBuffer object to the String object that is returned to the servlet.
public static synchronized String getHtmlRows(ResultSet results) throws SQLException{ StringBuffer htmlRows = new StringBuffer(); ResultSetMetaData metaData = results.getMetaData(); int columnCount = metaData.getColumnCount();
htmlRows.append("<tr>"); for (int i = 1; i <= columnCount; i++) htmlRows.append("<td><b>" + metaData.getColumnName(i) + "</td>"); htmlRows.append("</tr>");
while (results.next()){ htmlRows.append("<tr>"); for (int i = 1; i <= columnCount; i++) htmlRows.append("<td>" + results.getString(i) + "</td>"); } htmlRows.append("</tr>"); return htmlRows.toString(); } }
To get the column headings that are returned, the getHtmlRows method uses the getMetaData method of the ResultSet object to create a ResultSetMetaData object. This type of object contains information about the result set including the number of columns and the names of the columns. To get that information, the getHtmlRows method uses the getHtmlRows and getColumnName methods of the ResultSetMetaData object.
To get the data from the result set, the getHtmlRows method uses a for loop within a while loop to get the data for each column in each row. Within these loops, the code uses the getString method of the result set to get the data for each field. That converts the data to a string no matter what data type the field is.
Please note that this method is declared with the synchronized keyword. This prevents two or more threads of a servlet from executing this method at the same time.