public Query select(String query)
	{
		Connection connection = null;
		Statement statement = null;
		ResultSet result = null;

		try {
			connection = this.open();
			//WARN ODR_OPEN_DATABASE_RESOURCE
			/*
			 * The method creates a database resource
			 * (such as a database connection or row set),
			 * does not assign it to any fields, pass it to other
			 * methods, or return it, and does not appear to close
			 * the object on all paths out of the method.
			 * Failure to close database resources on all paths out
			 * of a method may result in poor performance, and could
			 *  cause the application to have problems communicating
			 *   with the database.
			 */
			statement = connection.createStatement();

			switch (this.getStatement(query)) {
				case SELECT:
					result = statement.executeQuery(query);
					return new Query(connection, statement, result);

				default:
					statement.executeQuery(query);
					return new Query(connection, statement, result);
			}
		} catch (SQLException ex) {
			if (ex.getMessage().toLowerCase().contains("locking") || ex.getMessage().toLowerCase().contains("locked")) {
				return retryResult(query);
				//this.writeError("",false);
			} else {
				this.writeError("Error at SQL Query: " + ex.getMessage(), false);
			}

		}
		return null;
	}