Исключение числового формата: ноль - PullRequest
0 голосов
/ 29 марта 2012

Я использую следующий тип данных в моей базе данных.

но я получил исключение как исключение:

в теме "Thread-2" java.lang.NumberFormatException: null

Как решить

btn.addActionListener(new ActionListener()
{
    Thread thread= new Thread()
    {
        public void run()
        { 
            Connection con= conn.getconnection();
            get_data();
            String Query = " INSERT INTO employees (Id,
                                P_F_No,
                                Name,
                                Date,
                                Guard/LP/ALP,
                                Incomming_Train,
                                Sign_off,
                                Room_Bed_No,
                                Out_going_train_time,
                                Sign_on,
                                subisezed_meal)
                                VALUES
                                (?,?,?,?,?,?,?,?,?,?,?)";

            try
            {
                PreparedStatement pr = con.prepareStatement(Query);
                pr.setString(1,data[0]);
                pr.setInt(2,Integer.parseInt(data[1]));
                pr.setString(3,data[2]);
                pr.setDate(4,Date.valueOf(data[3]));
                pr.setString(5,data[4]);
                pr.setTime(6,Time.valueOf(data[5]));
                pr.setTime(7,Time.valueOf(data[6]));
                pr.setString(8,data[7]);
                pr.setTime(9,Time.valueOf(data[8]));
                pr.setTime(10,Time.valueOf(data[9]));
                pr.setString(11,data[10]);
                pr.executeUpdate();
            }
            catch (SQLException ex)
            {
                System.out.println(ex);
            }
        }
    };

    thread.start();
});

Ответы [ 3 ]

1 голос
/ 29 марта 2012

Эта строка:

pr.setInt(2,Integer.parseInt(data[1]));

Вызов parseInt для нулевого значения приведет к получению исключения NumberFormatException, data [1] будет нулевым.

0 голосов
/ 29 марта 2012

используйте PreparedStatement.setObject (), чтобы избежать подобных исключений.JDBC автоматически преобразует значение объекта в соответствующий тип SQL.

0 голосов
/ 29 марта 2012

Вы должны проверить, является ли ваша переменная нулевой, и использовать метод setNull из PreparedStatement. Например:

if (data[0] == null)
    pr.setNull(1, Types.INTEGER);
else
     pr.setInt(1,data[0]);

Нечто подобное для других типов (VARCHAR и т. Д.). Oracle пытается преобразовать передаваемое вами значение в ожидаемый тип. В вашем случае у вас проблемы с числами, но может случиться что-то подобное со строкой, если значение равно нулю Для этого вам нужно указать, что вы хотите вставить нулевое значение, как я описал выше.

...