import java.sql.*; // for JDBC
import java.io.*; // for file i/o
/**
* update a log table and print to the screen how many
* rows the log table now has
*
* assumes that the Oracle student database is on
* cedar.humboldt.edu, and that there is an account
* on that database with username java and password
* that you know and have stored in a file pwd-file.txt
* in the same directory as this class' .class file
*
* @author Ann Burroughs
* @author (modified by) Sharon Tuttle
* @version 3-13-13
*/
public class UpdateLog
{
/**
* update a log table, and print to the screen
* how many rows are now in this log table
*
* @param args not used
*/
public static void main(String args[])
{
// turn off looking at IPv6 stack to avoid 2 minute
// wait for V6 timeout
System.setProperty("java.net.preferIPv4Stack", "true");
try
{
// load driver
Class.forName("oracle.jdbc.driver.OracleDriver");
String username = "java";
String password = getPassword();
// create Connection object con
Connection con = DriverManager.getConnection(
"jdbc:oracle:thin:@cedar:1521:student",
username, password);
//------
// try to insert into log table
//------
Statement insertStmt = con.createStatement();
String insertSql = "insert into log_table " +
"values " +
"('" + username + "', sysdate)";
// debugging tip:
// not a bad idea to print out your SQL string
// if you want/need to double-check it
System.out.println("insert is: \n" +
insertSql + "\n");
int numInserted = insertStmt.executeUpdate(insertSql);
if (numInserted == 1)
{
System.out.println("YAY! added row to " +
"log_table!");
}
else
{
System.out.println("No update? executeUpdate " +
"returned: " + numInserted);
}
printNumRows(con, "log_table");
// close Statement and Connection objects
insertStmt.close();
con.close();
} // end of try block
// any exception thrown within the try-block above will be
// caught and reported
catch (Exception e)
{
System.out.println(e);
}
} // end main
/**
* reads the java account password from the file pwd-file.txt,
* assumed to be in the same directory as this class
*
* @return the password read
*/
private static String getPassword()
{
BufferedReader fromStream;
String password = "";
try
{
fromStream = new BufferedReader(
new FileReader("pwd-file.txt"));
password = fromStream.readLine();
fromStream.close();
}
catch (FileNotFoundException exc)
{
System.out.println(
"Could not open: "
+ "pwd-file.txt");
}
catch (IOException exc)
{
System.out.println(
"IOError: " +
exc.getMessage());
}
return password;
}
/**
* for the given database connection, print to
* the screen the number of rows in the given table
*
* @param thisCon the database connection to be used
* @param desiredTable the table whose rows are
* to be counted
*/
private static void printNumRows(Connection thisCon,
String desiredTable)
{
try
{
Statement numRowsStmt = thisCon.createStatement();
String numRowsQuery = "select count(*) " +
"from " + desiredTable;
ResultSet rS = numRowsStmt.executeQuery(numRowsQuery);
rS.next();
System.out.println("Table " + desiredTable + " has "
+ rS.getInt(1) + " row(s). " );
numRowsStmt.close();
}
catch (Exception exc)
{
System.out.println(exc.toString());
}
}
} // end UpdateLog class