Jackcess Numberformateexception

Я пытаюсь создать программу, которая получает данные из CSV-файла и записывает их в созданную Java базу данных и таблицу Access. Программа использует цикл while для просмотра CSV-файла. Первая строка файла отлично записывается в базу данных, но на второй строке происходит сбой при попытке записать такой же ввод в таблицу. Как я могу это решить? Вот мой код:

public void GPXtoAccess() {
    try {
        Access = new Scanner(DummyCSV);
        Scanner = new Scanner(DummyCSV);

        while (Access.hasNextLine()) {
            Scanner.useDelimiter(";");
            GPXlat = Scanner.next();
            GPXlon = Scanner.next();
            GPXtime = Scanner.next();
            GPXname = Scanner.next();
            GPXdesc = Scanner.next();

            try {
                GPXTable.addRow(Column.AUTO_NUMBER, GPXlat, GPXlon, GPXtime, GPXname, GPXdesc);
            } catch (IOException T) {
                System.out.println("Error: " + T);
                System.out.println("Error is thrown while writing data to table");
            }
        }
    } catch (FileNotFoundException M) {
        System.out.println("Error: " + M);
    }
}

person HaroldFinch    schedule 17.12.2017    source источник


Ответы (2)


В вашем коде вы используете Scanner.next(), который возвращает значение String. В большинстве случаев значения столбца вашей таблицы не совпадают с String, поэтому вы получаете Numberformatexception

person Nisal Edu    schedule 17.12.2017
comment
Я установил тип данных этого поля на String, чтобы это не было проблемой. В первой строке CSV указано 2016-11-28T11:57:38, что правильно записано в базу данных. Вторая строка гласит: 2016-11-28T11:36:34, и в этот момент программа генерирует исключение numberformate. - person HaroldFinch; 18.12.2017
comment
@HaroldFinch Попробуйте установить тип поля на Object - person Nisal Edu; 18.12.2017
comment
Я могу выбрать из двоичного, логического, байтового, сложного_типа, двойного, плавающего, guid, int, long, memo, money, numeric, ole, short_date_time, text, unknown_od, unknown_11, unsupported_fixedlen и unsuppported_varlen... - person HaroldFinch; 18.12.2017
comment
@HaroldFinch, какую IDE вы используете? - person Nisal Edu; 18.12.2017
comment
NetBeans 8.2, jackcess 2.1.8 и 2.1.9 - person HaroldFinch; 18.12.2017
comment
@HaroldFinch Class[] types = new Class [] {} вы можете найти это в коде - person Nisal Edu; 18.12.2017
comment
Должен ли я использовать это как тип данных? - person HaroldFinch; 18.12.2017
comment
@HaroldFinch сбоку вы можете увидеть, как типы данных сопоставляются с вашим столбцом. - person Nisal Edu; 18.12.2017
comment
Хорошо, я нашел объект, куда мне его поместить? Я новичок в Java... - person HaroldFinch; 18.12.2017
comment
Типы класса [] = новый класс [] {java.lang.Object.class, java.lang.Object.class} - person Nisal Edu; 18.12.2017
comment
Это то, что я получил сейчас: компилировать... - person HaroldFinch; 18.12.2017
comment
Ничего, это просто выдает кучу ошибок типа "ожидаемый класс" ';' ожидается и тд. Могу ли я отправить вам свой код? - person HaroldFinch; 18.12.2017
comment
попробуйте java.lang.String.class вместо java.lang.Object.class - person Nisal Edu; 18.12.2017
comment
Когда я добавляю ваш код, он говорит, что я пытаюсь запустить некомпилируемый исходный код. Это строка кода: - person HaroldFinch; 18.12.2017
comment
Хорошо, я пытаюсь записать CSV-файл в базу данных Access. Тип данных поля, вызывающего проблему, — TEXT. Первая строка CSV-файла: 52.341435;6.383002;2016-11-28T11:57:38;Foto 7;Wal + greppel, с разделителем ;. Все идет нормально. Следующая строка CSV-файла содержит аналогичные данные, только цифры другие. Но программа вылетает, когда пытается записать 2016-11-28T11:57:38 в базу данных как ТЕКСТ, вызывая исключение numberformate. Итак, в первой строке он работает нормально, а во второй строке вылетает, пытаясь записать почти те же данные. - person HaroldFinch; 18.12.2017

Скорее всего, вы можете попытаться преобразовать тип String в числовой. Пожалуйста, проверьте типы данных ваших данных, которые вы пытаетесь использовать.

person WC Madhubhashini    schedule 18.12.2017
comment
Но он отлично работает в первой строке! Во второй строке все '-' и ':' стоят на одном месте, только цифры немного другие - person HaroldFinch; 18.12.2017