import org.mariadb.jdbc.MySQLDataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.ArrayList; public class DBSelectQueryCommand extends Node { public Parser parser; public DBSelectQueryCommand() {} public DBSelectQueryCommand(Parser parser) { this.parser = parser; } public Object eval() { String dbInfo = (String) parser.getVariable("dbInfo"); String query = (String) parser.getVariable("query"); MySQLDataSource dataSource = SetDBInfo(dbInfo.split(";")); List<String> results = new ArrayList<String>(); try (Connection connection = dataSource.getConnection()) { try (PreparedStatement st = connection.prepareStatement(query)) { ResultSet resultSet = st.executeQuery(); ResultSetMetaData rsmd = resultSet.getMetaData(); int columnsNumber = rsmd.getColumnCount(); while (resultSet.next()) { StringBuffer column = new StringBuffer(); for (int index=0;index<columnsNumber;index++) { column.append( resultSet.getString(index+1) ); if (index != columnsNumber-1) column.append(";"); } results.add(column.toString()); } resultSet.close(); } } catch (SQLException e) { System.out.println("Error in DBSelectQueryCommand.java--->eval(). " + e); System.exit(0); } return results; } public static MySQLDataSource SetDBInfo(String[] dbInfoParts) { MySQLDataSource dataSource = new MySQLDataSource(); dataSource.setURL(dbInfoParts[0]); dataSource.setDatabaseName(dbInfoParts[1]); dataSource.setUserName(dbInfoParts[2]); dataSource.setPassword(dbInfoParts[3]); return dataSource; } }