Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Coding JDBC in JavaBeans has several advantages. JDBC code itself is often very complex. Separating it into a JavaBean adds an abstraction layer and gives the program a better component-centric organization. Additionally, a large number of JDBC JSP programs return HTML tables as an output. A JavaBean that takes a generic SELECT SQL statement and returns an HTML table would be a reusable tool. Listing 9.4 is a JavaBean that takes several Strings as parameters and returns an HTML table based on the ResultSet.
|
Code View:
Scroll
/
Show All
package com.javadesktop.jdbc;
import java.sql.*;
import java.io.*;
import java.util.*;
public class JDBCBean implements Serializable{
protected transient String tableName, url;
protected transient String query, columnNames;
protected transient String resultTable, condn;
protected transient String userid, password;
protected transient Connection conn;
public JDBCBean(){
tableName = null;
resultTable = null;
condn = null;
columnNames = null;
resultTable = null;
query = null;
conn = null;
userid = null;
password = null;
}
public void setTableName(String tableName){
this.tableName = tableName;
}
public String getTableName(){
return tableName;
}
public void setURL(String url){
this.url = url;
}
public String getURL(){
return url;
}
public void setCondn(String condn){
this.condn = null;
this.condn = condn;
}
public String getCondn(){
return condn;
}
public void setUserid(String userid){
this.userid = userid;
}
public String getUserid(){
return userid;
}
public void setPassword(String password){
this.password = password;
}
public String getPassword(){
return password;
}
public void setColumnNames(String columnNames){
this.columnNames = columnNames;
}
public String getColumnNames(){
return columnNames;
}
public void setResultTable(String resultTable){
this.resultTable = resultTable;
}
public String getResultTable(){
this.readTable();
return resultTable;
}
public void readTable(){
int i = 0;
String condition = "";
if(columnNames == null){
columnNames = "*";
}
if(condn == null){
condition = "";
}
else{
condition = " WHERE " + condn;
}
query = "SELECT ";
if (columnNames.charAt(0) == '*') {
query += "* FROM " + tableName;
} else {
query += columnNames + " FROM " + tableName;
}
if((!condition.equals(""))){
query += condition;
}
executeQuery(query);
}
private void executeQuery(String query){
if(conn == null){
initialize();
}
try{
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery(query);
ResultSetMetaData rsmd = rset.getMetaData();
StringBuffer returnBuffer = new StringBuffer();
int colNum = rsmd.getColumnCount();
returnBuffer.append("\n\n<TABLE BORDER=\"1\" " +
"CELLSPACING=\"0\" CELLPADDING=\"3\">\n\t<TR>\n");
for (int i=1; i <= colNum; i++){
returnBuffer.append("\t\t<TD>");
returnBuffer.append("<B>" +
rsmd.getColumnName(i) + "</B></TD>\n");
}
returnBuffer.append("\t</TR>\n");
while (rset.next()){
returnBuffer.append("\t<TR>\n");
for (int i=1; i <= colNum; i++)
returnBuffer.append("\t\t<TD>" +
rset.getString(i) + "</TD>\n");
returnBuffer.append("\t</TR>\n");
}
returnBuffer.append("</TABLE>");
resultTable = returnBuffer.toString();
stmt.close();
done();
}catch(SQLException se){se.printStackTrace();}
}
private void initialize(){
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn =
DriverManager.getConnection(url, userid,
Password);
}catch(SQLException se){se.printStackTrace();}
catch(ClassNotFoundException cnfe)
{cnfe.printStackTrace();}
}
public void done(){
if(conn != null){
try{
conn.close();
}catch(SQLException se)
{se.printStackTrace();}
}
}
}
|