/** * Created by Tyler Raborn on 10/6/14. * A query (or series of queries) to be executed on the DB */ import java.sql.*; import java.util.*; import java.io.*; public class Query { private ArrayList<String> queryList; public Query() {} public Query(ArrayList<String> queryList) { this.queryList = new ArrayList<String>(queryList); try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { System.out.println("ERROR: Unable to load driver class!"); System.exit(1); } } /* prints result to stdout */ public ArrayDeque<String> execute(ConnectionData connectionData) { ArrayDeque<String> ret = new ArrayDeque<String>(); String connectionString = "jdbc:oracle:thin:"+ connectionData.getUsername()+ "/"+connectionData.getPassword()+"@//"+ connectionData.getHostName()+ ":"+Integer.toString(connectionData.getPortNumber())+ "/"+connectionData.getDbName(); try { for (String query : queryList) { Connection theConnection = DriverManager.getConnection( connectionString, connectionData.getUsername(), connectionData.getPassword() ); if (query.charAt(query.length()-1) == ';') query = query.substring(0, query.length()-1); //System.out.println("Query.java: executing string: " + query); Statement queryStatement = theConnection.createStatement(); ResultSet theResults = queryStatement.executeQuery(query); ResultSetMetaData theMetaData = theResults.getMetaData(); while(theResults.next()) { for (int i = 1; i < theMetaData.getColumnCount(); i++) { if (i > 1) { //System.out.print(", "); ret.push(", "); } String columnValue = theResults.getString(i); ret.push((columnValue + " " + theMetaData.getColumnName(i) + "\n")); } ret.push("\n"); } } } catch (SQLException e) { e.printStackTrace(); } return ret; } }