diff --git a/src/de/soderer/dbimport/DbImport.java b/src/de/soderer/dbimport/DbImport.java index fd4f7e1..f426b93 100644 --- a/src/de/soderer/dbimport/DbImport.java +++ b/src/de/soderer/dbimport/DbImport.java @@ -57,7 +57,6 @@ // TODO: Invalid null in not null column => error message // TODO: Missing mapping for not null column => error message // TODO: Check for string too large -// TODO: Check for int too large // TODO: Errorhandling on createConnection (dbconnection error detection and help messages in errors) // TODO: Dateien blob import export public class DbImport extends UpdateableConsoleApplication implements WorkerParentDual { diff --git a/src/de/soderer/dbimport/DbImportWorker.java b/src/de/soderer/dbimport/DbImportWorker.java index 71792ba..d0cc1a7 100644 --- a/src/de/soderer/dbimport/DbImportWorker.java +++ b/src/de/soderer/dbimport/DbImportWorker.java @@ -1081,10 +1081,26 @@ protected Closeable validateAndSetParameter(final PreparedStatement preparedStat final double value = Double.parseDouble(valueString); preparedStatement.setDouble(columnIndex, value); batchValueItem.add(value); - } else { - final int value = Integer.parseInt(valueString); + } else if (simpleDataType == SimpleDataType.Integer) { + int value; + try { + value = Integer.parseInt(valueString); + } catch (@SuppressWarnings("unused") final NumberFormatException e) { + throw new DbImportException("Numeric value is invalid for integer: " + valueString); + } preparedStatement.setInt(columnIndex, value); batchValueItem.add(value); + } else if (simpleDataType == SimpleDataType.BigInteger) { + long value; + try { + value = Long.parseLong(valueString); + } catch (@SuppressWarnings("unused") final NumberFormatException e) { + throw new DbImportException("Numeric value is invalid for big integer: " + valueString); + } + preparedStatement.setLong(columnIndex, value); + batchValueItem.add(value); + } else { + throw new DbImportException("Numeric value is invalid for " + simpleDataType.name() + " data column: " + valueString); } } else if (",".equals(formatInfo)) { valueString = valueString.replace(".", "").replace(",", "."); @@ -1092,10 +1108,26 @@ protected Closeable validateAndSetParameter(final PreparedStatement preparedStat final double value = Double.parseDouble(valueString); preparedStatement.setDouble(columnIndex, value); batchValueItem.add(value); - } else { - final int value = Integer.parseInt(valueString); + } else if (simpleDataType == SimpleDataType.Integer) { + int value; + try { + value = Integer.parseInt(valueString); + } catch (@SuppressWarnings("unused") final NumberFormatException e) { + throw new DbImportException("Numeric value is invalid for integer: " + valueString); + } preparedStatement.setInt(columnIndex, value); batchValueItem.add(value); + } else if (simpleDataType == SimpleDataType.BigInteger) { + long value; + try { + value = Long.parseLong(valueString); + } catch (@SuppressWarnings("unused") final NumberFormatException e) { + throw new DbImportException("Numeric value is invalid for big integer: " + valueString); + } + preparedStatement.setLong(columnIndex, value); + batchValueItem.add(value); + } else { + throw new DbImportException("Numeric value is invalid for " + simpleDataType.name() + " data column: " + valueString); } } else if ("file".equalsIgnoreCase(formatInfo)) { if (!new File(valueString).exists()) { @@ -1352,8 +1384,13 @@ protected Closeable validateAndSetParameter(final PreparedStatement preparedStat preparedStatement.setDouble(columnIndex, value); batchValueItem.add(value); } else { - final int value = Integer.parseInt(valueString); - preparedStatement.setInt(columnIndex, value); + long value; + try { + value = Long.parseLong(valueString); + } catch (@SuppressWarnings("unused") final NumberFormatException e) { + throw new DbImportException("Numeric value is invalid for integer: " + valueString); + } + preparedStatement.setLong(columnIndex, value); batchValueItem.add(value); } } else if (simpleDataType == SimpleDataType.BigInteger) { @@ -1363,7 +1400,12 @@ protected Closeable validateAndSetParameter(final PreparedStatement preparedStat preparedStatement.setDouble(columnIndex, value); batchValueItem.add(value); } else { - final long value = Long.parseLong(valueString); + long value; + try { + value = Long.parseLong(valueString); + } catch (@SuppressWarnings("unused") final NumberFormatException e) { + throw new DbImportException("Value is invalid for big integer: " + valueString); + } preparedStatement.setLong(columnIndex, value); batchValueItem.add(value); }