diff --git a/src/main/java/at/compax/tools/sql/SqlExecutor.java b/src/main/java/at/compax/tools/sql/SqlExecutor.java index 583765b..76dcabb 100644 --- a/src/main/java/at/compax/tools/sql/SqlExecutor.java +++ b/src/main/java/at/compax/tools/sql/SqlExecutor.java @@ -10,6 +10,8 @@ import java.sql.SQLException; import java.sql.SQLWarning; import java.sql.Statement; import java.sql.Types; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.List; import java.util.Vector; @@ -66,7 +68,9 @@ public class SqlExecutor { Statement stmt = conn.createStatement(); try { - stmt.execute(sql.trim()); + String cleanedSql = sql.trim(); + cleanedSql = cleanedSql.replaceAll("/$", ""); + stmt.execute(cleanedSql); log.info("Executed"); } catch (SQLException e) { return Result.builder() // @@ -175,7 +179,9 @@ public class SqlExecutor { ColumnBuilder columnBuilder = Column.builder(); int columnType = metaData.getColumnType(columnIndex); - if (columnType == Types.VARCHAR) { + if (rs.getString(columnIndex) == null) { + columnBuilder.value(null); + } else if (columnType == Types.VARCHAR) { columnBuilder.value(rs.getString(columnIndex)); } else if (columnType == Types.NUMERIC) { columnBuilder.value(rs.getLong(columnIndex)); @@ -184,19 +190,17 @@ public class SqlExecutor { } else if (columnType == Types.TIME) { columnBuilder.value(rs.getTime(columnIndex)); } else if (columnType == Types.TIMESTAMP) { - columnBuilder.value(rs.getTimestamp(columnIndex)); + DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + columnBuilder.value(df.format(rs.getTimestamp(columnIndex))); } else if (columnType == Types.CLOB) { Clob clob = rs.getClob(columnIndex); - if (clob != null) { - columnBuilder.value(clob.getSubString(1, 100)); - } else { - columnBuilder.value(null); - } + columnBuilder.value(clob.getSubString(1, 100)); } else if (columnType == Types.BLOB) { columnBuilder.value("[BLOB]"); } else { String message = String.format("Unhandled column type <%s>. Defaulting to String", rs.getMetaData().getColumnTypeName(columnIndex)); log.warn(message); + columnBuilder.value(rs.getString(columnIndex)); } columns.add(columnBuilder.build()); diff --git a/src/main/java/at/compax/tools/sql/main/Main.java b/src/main/java/at/compax/tools/sql/main/Main.java index 63aca4f..22f787b 100644 --- a/src/main/java/at/compax/tools/sql/main/Main.java +++ b/src/main/java/at/compax/tools/sql/main/Main.java @@ -74,6 +74,9 @@ public class Main { private static void closeConnection(FrogConnection conn) { if (conn != null) { + try { + conn.rollback(); + } catch (SQLException e) {} try { conn.close(); } catch (SQLException e) {