// DataBase.java import java.sql.*; public class DataBase { private static final String driverName = "org.gjt.mm.mysql.Driver"; private String url = "jdbc:mysql://gold.mcs.csuhayward.edu:3306/"; private String dbuser; private String dbpass; private String dbname; private Connection con; private Statement stmt; private ResultSet rs; // for tools such as JavaScript1.2 that cannot catch exceptions private boolean err = false; private String errMsg = ""; private boolean doCatch = false; public DataBase(String name, String user, String password, boolean doCatch) throws Exception { err = false; this.doCatch = doCatch; try { dbuser = user; dbpass = password; dbname = name; url = url + dbname; //Class.forName(driverName); Class.forName(driverName).newInstance(); con = DriverManager.getConnection(url,dbuser,dbpass); } catch (Exception e) { err = true; errMsg = e.getMessage(); if (!doCatch) throw e; } } public DataBase(String name, String user, String password) throws Exception { this(name,user,password,false); } public ResultSet execute(String query) throws Exception { err = false; rs = null; try { stmt = con.createStatement(); stmt.execute(query); rs = stmt.getResultSet(); } catch (Exception e) { if (e.getMessage().equals("mysql exception: No columns returned.")) ; // JDBC driver bug - update was OK really else { err = true; errMsg = e.getMessage(); if (!doCatch) throw e; } } return rs; } public int executeUpdate(String query) throws Exception { err = false; int i = -1; try { stmt = con.createStatement(); i = stmt.executeUpdate(query); } catch (Exception e) { err = true; errMsg = e.getMessage(); if (!doCatch) throw e; } return i; } public void close() { try { rs.close(); stmt.close(); con.close(); } catch (Exception e) {} } public boolean hasError() { return err; } public String getErrMsg() { return errMsg; } // static methods public static double toDouble(String s) { Double d = new Double(0.0); try { d = Double.valueOf(s); } catch(Exception e) {return 0.0;} return d.doubleValue(); } public static int toInt(String s) { Integer i = new Integer(0); try { i = Integer.valueOf(s); } catch(Exception e) {return 0;} return i.intValue(); } public static int max(int i, int j) { if (i > j) return i; else return j; } public static String getRow(ResultSet rs, ResultSetMetaData md, boolean getNames) { boolean padLeft; String d; try { String s = ""; String s1 = ""; for (int i=1; i<=md.getColumnCount(); i++) { String name = md.getColumnName(i); String d1 = ""; if (getNames) d = name; else { d = rs.getString(i); if (d == null) d = "NULL"; } int len = max(md.getColumnDisplaySize(i), name.length()); String type = md.getColumnTypeName(i); if (type.equals("INTEGER") || type.equals("FLOAT") || type.equals("DOUBLE")) padLeft = true; else padLeft = false; if (getNames) { d = pad(d,len," ",padLeft); d1 = pad(d1,len,"-",padLeft); } else d = pad(d,len," ",padLeft); s = s + d + " "; if (getNames) s1 = s1 + d1 + " "; } if (getNames) s = s + "\n" + s1; return s; } catch( Exception e ) {return e.getMessage();} } public static String pad(String s, int width, String padChar, boolean padLeft) { for (int i=s.length()+1; i<=width; i++) if (padLeft) s = padChar + s; else s = s + padChar; return s; } }