package beans;

import java.sql.*;
import java.io.*;

public class DAOBean implements Serializable {

   protected String driverName =
      "oracle.jdbc.driver.OracleDriver";
   protected String dbaseName =
      "jdbc:oracle:thin:@sigma.mathcs.sjsu.edu:1521:CS174";

   protected String username= "pearce_ora";
	protected String password= "blowfish";
   protected Connection connection;
   protected Statement statement;

   public ResultSet execute(String sql) {
      try {
         System.out.println("sql = " + sql);
         boolean ok = statement.execute(sql);
         System.out.println("ok = " + ok);
         return statement.getResultSet();
      } catch (SQLException e) {
         System.err.println("=====> execute failed!");
      }
      return null;
   }

   public void close() {
		try {
			statement.close();
		   connection.close();
		} catch(Exception e) {
			System.err.println(e);
		}
	}

   /**
	 * Converts a result set into a formatted string semi-suitable
	 * for printing. The main significance of this method is that it
	 * shows how result sets are typically manipulated.
	 */
	public String toString (ResultSet rs) throws SQLException {

		StringBuffer results = new StringBuffer();
		ResultSetMetaData metaData = rs.getMetaData();
		int numCols = metaData.getColumnCount();
		String spaces = "    ";

		// get column names:
		for(int i = 1; i <= numCols; i++) {
			results.append(metaData.getColumnName(i) + spaces);
		}

		results.append("\n");

		while(rs.next()) {
			for(int i = 1; i <= numCols; i++) {
				results.append(rs.getObject(i) + spaces);
			}
			results.append("\n");
		}

		return results.toString();
	}

   public DAOBean() throws SQLException, ClassNotFoundException {
		connect();
	}

   public void connect()
   throws SQLException, ClassNotFoundException {
      System.setProperty("jdbc.drivers", driverName);
      try {
			Class.forName(driverName);
			connection = DriverManager.getConnection(dbaseName, username, password);
      } catch (Exception e) { // dbase not found?
         System.err.println ("=====> can't connect to " + dbaseName + " because " + e);
      }
      finally {
			//if (connection != null)
			   //connection.close();
		}
		statement = connection.createStatement();
   }

   public void finalize() throws SQLException {
      statement.close();
      connection.close();
   }
}



