/* * Created on Aug 10, 2006 * * This code belongs to SQL Power Group Inc. */ package ca.sqlpower.sql; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.Iterator; import java.util.List; public class CheckConnection { /** * Checks a databases.xml connection to make sure it's working. */ public static void main(String[] args) throws Exception { if (args.length != 1) { System.out.println("CheckConnection: A small utility to test a databases.xml connection"); System.out.println("Usage: "); System.out.println(" java -cp sqlpower.jar:/path/to/jdbc/driver.jar ca.sqlpower.sql.CheckConnection /path/to/databases.xml"); return; } String databasesXMLPath = args[0]; System.out.println("Reading connection specs from "+databasesXMLPath); System.out.println(""); DBCSSource dbcss = new XMLFileDBCSSource(databasesXMLPath); List dbcsList = dbcss.getDBCSList(); Iterator it = dbcsList.iterator(); int i = 0; while (it.hasNext()) { DBConnectionSpec dbcs = (DBConnectionSpec) it.next(); System.out.println("["+i+"] "+dbcs.getDisplayName()+" <"+dbcs.getUrl()+">"); i++; } System.out.print("Test which connection? "); String conNum = readLine(); DBConnectionSpec dbcs = (DBConnectionSpec) dbcsList.get(Integer.parseInt(conNum.toString())); if (dbcs.getUser() == null || dbcs.getPass() == null) { System.out.print("Username? "); dbcs.setUser(readLine()); System.out.print("Password? "); dbcs.setPass(readLine()); } System.out.println("Making connection..."); System.out.println("Connection Name: "+dbcs.getDisplayName()); System.out.println("JDBC Driver Class: "+dbcs.getDriverClass()); Class.forName(dbcs.getDriverClass(), true, CheckConnection.class.getClassLoader()).newInstance(); System.out.println("JDBC URL: "+dbcs.getUrl()); System.out.println("Username: "+dbcs.getUser()); System.out.println("Password: "+dbcs.getPass()); long connStartTime = System.currentTimeMillis(); Connection con = DriverManager.getConnection(dbcs.getUrl(), dbcs.getUser(), dbcs.getPass()); long connEndTime = System.currentTimeMillis(); System.out.println("Got connection in "+(connEndTime-connStartTime)+"ms."); System.out.println("Database version: "+con.getMetaData().getDatabaseProductVersion()); System.out.println("Driver version: "+con.getMetaData().getDriverVersion()); String sql = "SELECT schema_version FROM def_param"; System.out.println("\nExecuting query: "+sql); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql); System.out.print("Result: "); while (rs.next()) { System.out.println(rs.getString(1)); } rs.close(); stmt.close(); con.close(); System.out.println("\nDone. Test Successful!"); } /** * Interactively reads a line of text from System.in. A line is terminated * by CR, LF, or EOF. Supports backspace, but no other fancy editing features. */ private static String readLine() throws IOException { StringBuffer line = new StringBuffer(); int ch; for (;;) { ch = System.in.read(); if (ch == -1 || ch == '\r' || ch == '\n') break; if (ch == 0x7f || ch == 0x08) { if (line.length() > 0) { // delete and backspace both work like backspace line.deleteCharAt(line.length()-1); System.out.print((char) 0x08); } } else { line.append((char) ch); } } System.out.println(""); return line.toString(); } }