Files

336 lines
9.9 KiB
Java

import java.sql.*;
import java.io.*;
public class example3 {
public static void main (String args[]) throws Exception,
IOException, SQLException {
try {
Class.forName ("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
System.out.println ("Could not load the driver");
}
String user = readEntry("Enter userid: ");
String pass = readEntry("Enter password: ");
Connection conn = DriverManager.getConnection (
"jdbc:oracle:thin:@tinman.cs.gsu.edu:1521:sid9ir2",user,pass);
/* create new table called tempSSN */
String sqlString = "create table tempSSN (" +
"ssn char(9) not null, " +
"primary key(ssn))";
Statement stmt1 = conn.createStatement();
try {
stmt1.executeUpdate(sqlString);
} catch (SQLException e) {
System.out.println("Could not create tempSSN table");
stmt1.close();
return;
}
boolean done = false;
do {
printMenu();
System.out.print("Type in your option: ");
System.out.flush();
String ch = readLine();
System.out.println();
switch (ch.charAt(0)) {
case 'a': findSupervisees(conn);
break;
case 'b': findHighestPaid(conn);
break;
case 'c': findMostWorked(conn);
break;
case 'q': done = true;
break;
default : System.out.println(" Not a valid option ");
} //switch
} while(!done);
/* drop table called tmpSSN */
sqlString = "drop table tempSSN";
try {
stmt1.executeUpdate(sqlString);
} catch (SQLException e) {
}
stmt1.close();
conn.close();
} // main
private static void findSupervisees(Connection conn)
throws SQLException, IOException {
String sqlString = null;
Statement stmt = conn.createStatement();
// Delete tuples from tempssn from previous request.
sqlString = "delete from tempssn";
try {
stmt.executeUpdate(sqlString);
} catch (SQLException e) {
System.out.println("Could not execute Delete");
stmt.close();
return;
}
/* Get the ssn for the employee */
sqlString = "select lname, fname, ssn " +
"from employee " +
"where lname = '";
String lname = readEntry( "Enter last name of employee : ").trim();
sqlString += lname;
sqlString += "'";
ResultSet rset1;
try {
rset1 = stmt.executeQuery(sqlString);
} catch (SQLException e) {
System.out.println("Could not execute Query");
stmt.close();
return;
}
String samelName[] = new String[40];
String fName[] = new String[40];
String empssn[] = new String[40];
String ssn;
int nNames = 0;
while (rset1.next()) {
samelName[nNames] = rset1.getString(1);
fName[nNames] = rset1.getString(2);
empssn[nNames] = rset1.getString(3);
nNames++;
}
if (nNames == 0) {
System.out.println("Name does not exist in database.");
stmt.close();
return;
}
else if (nNames > 1) {
for(int i = 0; i < nNames; i++) {
System.out.println(samelName[i] + "," +
fName[i] + " " + empssn[i]);
}
ssn = readEntry("Select ssn from list : ");
ResultSet r = stmt.executeQuery(
"select ssn from employee where ssn = '" +
ssn + "'");
if( !r.next()) {
System.out.println("SSN does not exist in database.");
stmt.close();
return;
}
}
else {
ssn = empssn[0];
}
/* Find immediate supervisees for that employee */
sqlString = "select distinct ssn from employee where superssn = '";
sqlString += ssn;
sqlString += "'";
try {
rset1 = stmt.executeQuery(sqlString);
} catch (SQLException e) {
System.out.println("Could not execute query");
stmt.close();
return;
}
/* Insert result into tempSSN table*/
Statement stmt1 = conn.createStatement();
while (rset1.next()) {
String sqlString2 = "insert into tempSSN values ('";
sqlString2 += rset1.getString(1);
sqlString2 += "')";
try {
stmt1.executeUpdate(sqlString2);
} catch (SQLException e) {
}
}
/* Recursive Querying */
ResultSet rset2;
boolean newrowsadded;
sqlString = "select employee.ssn from employee, tempSSN " +
"where superssn = tempSSN.ssn";
do {
newrowsadded = false;
try {
rset2 = stmt.executeQuery(sqlString);
} catch (SQLException e) {
System.out.println("Could not execute Query");
stmt.close();
stmt1.close();
return;
}
while ( rset2.next()) {
try {
String sqlString2 = "insert into tempSSN values ('";
sqlString2 += rset2.getString(1);
sqlString2 += "')";
stmt1.executeUpdate(sqlString2);
newrowsadded = true;
} catch (SQLException e) {
}
}
} while (newrowsadded);
stmt1.close();
/* Print Results */
sqlString = "select fname, lname, e.ssn from " +
"employee e, tempSSN t where e.ssn = t.ssn";
ResultSet rset3;
try {
rset3 = stmt.executeQuery(sqlString);
} catch (SQLException e) {
System.out.println("Could not execute Query");
stmt.close();
return;
}
System.out.println(" SUPERVISEES ");
System.out.print("FNAME");
for (int i = 0; i < 10; i++)
System.out.print(" ");
System.out.print("LNAME");
for (int i = 0; i < 10; i++)
System.out.print(" ");
System.out.print("SSN");
for (int i = 0; i < 6; i++)
System.out.print(" ");
System.out.println("\n----------------------------------------\n");
while(rset3.next()) {
System.out.print(rset3.getString(1));
for (int i = 0; i < (15 - rset3.getString(1).length()); i++)
System.out.print(" ");
System.out.print(rset3.getString(2));
for (int i = 0; i < (15 - rset3.getString(2).length()); i++)
System.out.print(" ");
System.out.println(rset3.getString(3));
}
stmt.close();
}
private static void findHighestPaid(Connection conn)
throws SQLException, IOException {
Statement stmt = conn.createStatement();
String query = "select ssn, fname, lname, salary " +
"from employee " +
"where salary is not null " +
"order by salary desc";
ResultSet rset;
try {
rset = stmt.executeQuery(query);
} catch (SQLException e) {
System.out.println("could not execute query ");
while (e!= null) {
System.out.println ("Message :" + e.getMessage());
e = e.getNextException();
}
stmt.close();
return;
}
System.out.println(" HIGHEST PAID WORKERS");
System.out.println("--------------------------------------------------\n");
for (int i = 0; i < 5 && rset.next(); i++) {
System.out.print(rset.getString(1) + " " );
System.out.print(rset.getString(2));
for (int j=0; j<16-rset.getString(2).length(); j++)
System.out.print(" ");
System.out.print(rset.getString(3));
for (int j=0; j<16-rset.getString(3).length(); j++)
System.out.print(" ");
System.out.println(rset.getDouble(4));
}
stmt.close();
}
private static void findMostWorked(Connection conn)
throws SQLException, IOException {
Statement stmt = conn.createStatement();
String query = "select essn, fname, lname, sum(Hours) TotalHours " +
"from employee, works_on " +
"where ssn = essn and Hours is not null " +
"group by essn, fname, lname " +
"order by TotalHours desc";
ResultSet rset;
try {
rset = stmt.executeQuery(query);
} catch (SQLException e) {
System.out.println("could not execute query ");
while (e!= null) {
System.out.println ("Message :" + e.getMessage());
e = e.getNextException();
}
stmt.close();
return;
}
System.out.println(" MOST WORKED WORKERS");
System.out.println("--------------------------------------------------\n");
for (int i = 0; i < 5 && rset.next(); i++) {
System.out.print(rset.getString(1) + " " );
System.out.print(rset.getString(2));
for (int j=0; j<16-rset.getString(2).length(); j++)
System.out.print(" ");
System.out.print(rset.getString(3));
for (int j=0; j<16-rset.getString(3).length(); j++)
System.out.print(" ");
System.out.println(rset.getFloat(4));
}
stmt.close();
}
private static String readEntry(String prompt) {
try {
StringBuffer buffer = new StringBuffer();
System.out.print(prompt);
System.out.flush();
int c = System.in.read();
while(c != '\n' && c != -1) {
buffer.append((char)c);
c = System.in.read();
}
return buffer.toString().trim();
} catch (IOException e) {
return "";
}
}
private static String readLine() {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr, 1);
String line = "";
try {
line = br.readLine();
} catch (IOException e) {
System.out.println("Error in SimpleIO.readLine: " +
"IOException was thrown");
System.exit(1);
}
return line;
}
private static void printMenu() {
System.out.println("\n QUERY OPTIONS ");
System.out.println("(a) Find Supervisees at all levels. ");
System.out.println("(b) Find Highest paid workers. ");
System.out.println("(c) Find the most worked workers. ");
System.out.println("(q) Quit. \n");
}
}