Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.


  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • DownloadDownload
  • PrintPrint
Share this Page URL
Help

Chapter 9. Database Connectivity > JDBC and JavaBeans

9.5. JDBC and JavaBeans

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.

Listing 9.4. JDBCBean.java

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();}
         }
       }
  }


					  


  

You are currently reading a PREVIEW of this book.

                                                                                        

Get instant access to over
$1 million worth of books and videos.

  

Start a Free Trial