/**** DatabaseManager.java ****/ package database; import java.util.*; import java.io.*; import java.sql.*; public class DatabaseManager implements Serializable { private String driver; private String url; private String sql; private String user = ""; private String password = ""; private String result = ""; private String message = ""; private Connection con = null; private Statement stmt = null; private boolean debug = false; public DatabaseManager(String driver, String subprotocol, String subprotocolData, String sql) { // // your constructors will differ ... // } public DatabaseManager() { // // your constructors will differ ... // } public static void main(String[] args) { if (usageOnly(args)) return; DatabaseManager dm; if (args.length == 4) { dm = new DatabaseManager(args[0], args[1], args[2], args[3]); dm.connectToDB(); dm.executeSql(); System.out.println(dm.getResult()); dm.closeDB(); } } private static boolean usageOnly(String[] args) { if (args.length != 4 || (args.length > 0 && (args[0].equalsIgnoreCase("-help") || args[0].equalsIgnoreCase("-h") || args[0].equalsIgnoreCase("-usage")))) { System.out.println("Usage: java DatabaseManager" + " [ ]"); return true; } else return false; } private void handleMessage(String msg) { if (debug) System.out.println(msg); message = msg; } synchronized public void connectToDB() { closeDB(); try { // // ... // } catch (Exception e) { result = ""; handleMessage("Error connecting to database: " + url); } } synchronized public void closeDB() { try { closeStatement(); if (con != null) { connected = false; stmt = null; con.close(); con = null; } } catch (Exception e) { con = null; handleMessage( "Error closing the database connection: " + url); } } private void closeStatement() { try { if (stmt != null) stmt.close(); } catch (Exception e) { handleMessage("Error closing the current statement."); } } synchronized public void executeSql() { if (con == null || stmt == null) { handleMessage("Please connect to a database."); return; } int len = sql.length(); if (len == 0) { handleMessage("SQL statement is empty."); return; } if (len < 6) { handleMessage("SQL statement is invalid."); return; } try { String keyword = sql.substring(0, 6); if (keyword.equalsIgnoreCase("select")) { // handle query ... } else if (keyword.equalsIgnoreCase("update") || keyword.equalsIgnoreCase("insert") || keyword.equalsIgnoreCase("delete")) { // handle update ... } else { // handle general SQL ... } // notify targets, if any ... } catch (Exception e) { handleMessage("Error executing the current statement."); } } public String executeSqlGetResult() { executeSql(); return result; } public void printResult() { System.out.println(result); } synchronized public String getResultAsHtmlParagraph() { if (result.indexOf("

") != -1 || result.indexOf("
") != -1 || result.indexOf("") != -1) return result; String html = "

"; StringTokenizer st = new StringTokenizer(result, "\n"); while (st.hasMoreTokens()) html += st.nextToken() + "
"; html += "

"; return html; } synchronized public String getResultAsHtmlTextArea() { String html = ""; return html; } // // properties: // public String getMessage() { return message; } public void setMessage(String message) { // do nothing -- read-only property } public String getResult() { return result; } public void setResult(String result) { // do nothing -- read-only property } public String getDriver() { return driver; } synchronized public void setDriver(String str) { driver = str; } public String getUrl() { return url; } synchronized public void setUrl(String str) { url = str; } public String getUser() { return user; } synchronized public void setUser(String str) { user = str; } public String getPassword() { return password; } synchronized public void setPassword(String str) { password = str; } public String getSql() { return sql; } synchronized public void setSql(String str) { sql = str; } public boolean getDebug() { return debug; } synchronized public void setDebug(boolean state) { debug = state; } }