import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * This class connects to Stanford's Oracle database using JDBC
 * and runs a simple query.
 */
public class HelloWorld
{
    public HelloWorld(String userName, String password)
    {
	// load the JDBC driver class
	try {
	    Class.forName("oracle.jdbc.driver.OracleDriver");
	} catch (ClassNotFoundException cnfex) {
	    System.err.println("Could not load the Oracle JDBC driver.");
	    System.err.println("Ensure that classes111.zip is included in " +
			       " your classpath.");
	    System.err.println("Running \"source /usr/class/cs345/all.env\" " +
			       "will accomplish this on Stanford's UNIX " +
			       "systems.");
	    return;
	}


	final String connStr =
	    "jdbc:oracle:thin:@dbaprod1.stanford.edu:1521:SHR1_PRD";
	try {
	    // create a connection to the database	
	    Connection conn;
	    conn = DriverManager.getConnection(connStr, userName, password);

	    // create a database statement
	    Statement stmt = conn.createStatement();
	    String sql = "SELECT 'Hello World' FROM DUAL";
	    ResultSet rs = stmt.executeQuery(sql);
	    rs.next();
	    String result = rs.getString(1);
	    rs.close();

	    System.out.println(result);
	} catch (SQLException sex) {
	    System.err.println(sex.getMessage());
	    sex.printStackTrace();
	}
    }

    /**
     * Two command-line arguments are expected (userName and password).
     */
    public static void main(String[] args) 
    {
	if (args.length != 2) {
	    System.err.println("Usage: java HelloWorld <userName> <password>");
	} else {
	    new HelloWorld(args[0], args[1]);
	}
    }
}
