Java tutorial
/* * Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002. * All rights reserved. Software written by Ian F. Darwin and others. * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * Java, the Duke mascot, and all variants of Sun's Java "steaming coffee * cup" logo are trademarks of Sun Microsystems. Sun's, and James Gosling's, * pioneering role in inventing and promulgating (and standardizing) the Java * language and environment is gratefully acknowledged. * * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for * inventing predecessor languages C and C++ is also gratefully acknowledged. */ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; /** Encapsulate the Connection-related operations that every * JDBC program seems to use. */ public class ConnectionUtil { /** The default config filename, relative to ${user.home} */ public static final String DEFAULT_NAME = ".db.properties"; /** The current config filename */ private static String configFileName = System.getProperty("user.home") + File.separator + DEFAULT_NAME; /** Get a Connection for the given config using the default or set property file name */ public static Connection getConnection(String config) throws Exception { try { Properties p = new Properties(); p.load(new FileInputStream(configFileName)); return getConnection(p, config); } catch (IOException ex) { throw new Exception(ex.toString()); } } /** Get a Connection for the given config name from a provided Properties */ public static Connection getConnection(Properties p, String config) throws Exception { try { String db_driver = p.getProperty(config + "." + "DBDriver"); String db_url = p.getProperty(config + "." + "DBURL"); String db_user = p.getProperty(config + "." + "DBUser"); String db_password = p.getProperty(config + "." + "DBPassword"); if (db_driver == null || db_url == null) { throw new IllegalStateException("Driver or URL null: " + config); } return createConnection(db_driver, db_url, db_user, db_password); } catch (ClassNotFoundException ex) { throw new Exception(ex.toString()); } catch (SQLException ex) { throw new Exception(ex.toString()); } } public static Connection createConnection(String db_driver, String db_url, String db_user, String db_password) throws ClassNotFoundException, SQLException { // Load the database driver System.out.println("Loading driver " + db_driver); Class.forName(db_driver); System.out.println("Connecting to DB " + db_url); return DriverManager.getConnection(db_url, db_user, db_password); } /** Returns the full path of the configuration file being used. * @return Returns the configFileName. */ public static String getConfigFileName() { return configFileName; } /** Sets the full path of the config file to read. * @param configFileNam The FileName of the configuration file to use. */ public static void setConfigFileName(String configFileNam) { configFileName = configFileNam; File file = new File(configFileName); if (!file.canRead()) { throw new IllegalArgumentException("Unreadable: " + configFileName); } try { ConnectionUtil.configFileName = file.getCanonicalPath(); } catch (IOException ex) { System.err.println("Warning: IO error checking path: " + configFileName); ConnectionUtil.configFileName = configFileName; } } }