Я ищу некоторые инструкции о том, как (или если есть способ) проверить тип поля БД при выполнении оператора INSERT, чтобы обойти исключение "Неправильное целочисленное значение".
Проблема, с которой я сталкиваюсь, заключается в том, что моя программа читает из источника данных CSV и может содержать поля, которые являются пустыми и предназначены для целочисленного поля. Когда я пытаюсь вставить эту пустую строку в поле INT, возникает это исключение.
В фрагменте кода (у меня есть всего около 50 полей для обновления, но для упрощения я сократил код) я создал функцию CheckField для итерации по всем полям, но у нее есть явные жесткие ограничения, если «N / A» и т. Д. Я предпочитаю использовать цикл для setString из-за количества обновляемых полей по сравнению с 50 операторами setString.
Я посмотрел ResultSetMetaData, и он содержит то, что я ищу с "getColumnTypeName", но я считаю, что это применимо только к операторам SELECT, а не к UPDATE (может быть?).
int field[] = {3, 4, 0};
String updateTable = "UPDATE test_table F1 = ?, F2 = ? WHERE F0 = ?"
PreparedStatement update = conMaria.prepareStatement(updateTable);
Iterable<CSVRecord> records = CSVFormat.RFC4180.withFirstRecordAsHeader().parse(in);
for (CSVRecord record : records) {
for (int i = 0; i < field.length; i++)
update.setString(i + 1, CheckField(record.get(field[i])));
update.executeUpdate();
public static String CheckField(String recordValue) {
return recordValue.equals("") ? null : recordValue;
}
Спасибо.