Java, MySQL: myStatement.executeUpdate INSERT INTO дает исключение NullPointerException

Проблема:

java.lang.NullPointerException at mainPackagePaketverwaltung.Datenbank.savePaket(Datenbank.java:58) at mainPackagePaketverwaltung.MainPV$12.actionPerformed(MainPV.java:507)

Причина:

Это строка (58):

myStatement.executeUpdate("INSERT INTO Relation VALUES(NULL, '"+ PaketID +"', '"+ atodb.getArtikelID() + "', '"+ atodb.getMenge() +"')");

Насколько я понимаю, это должно создать новую строку в базе данных, потому что для NULL / Primary_Key установлено значение Auto_Increment, но после одного короткого замыкания он выдает ошибку.

Этого не должно происходить, т.к. при каждом запуске Auto_Increment будет создавать новую строку.

Больше информации:

PaketID - это INT

atodb.getArtikelID - это INT

atodb.getMenge - это INT

Все поля БД - INT, с

вы уверены, что atodb не нулевой?

YCF_L 08.05.2018 11:42

а также myStatement не должен быть нулевым

guleryuz 08.05.2018 11:46

@YCF_L Да, я могу подтвердить (только что проверил с помощью System.out.print), что они не равны нулю, первый набор данных попадает в БД, но ошибки секунд даже с данными в нем

LifeLifeLP 08.05.2018 11:47

@guleryuz я установил значение null после того, как .executeUpdate это неправильно?

LifeLifeLP 08.05.2018 11:48

Да ... это кажется неправильным

gargkshitiz 08.05.2018 11:49

Можете ли вы опубликовать тело метода savePaket

guleryuz 08.05.2018 11:52

@gargkshitiz да, это исправило, я даже не подумал об этом, потому что, на мой взгляд, это не должно быть проблемой, если после выполнения ставки мы находимся. Спасибо за быструю помощь! :)

LifeLifeLP 08.05.2018 11:52

Не могли бы вы показать нам полный код, @gargkshitiz верен, что, если ваша транзакция еще не зафиксирована, а вы уже установили для объекта значение null? и прочтите, пожалуйста, о «Подготовленном заявлении». Ваш код является жертвой заражения SQL и синтаксиса ошибок.

YCF_L 08.05.2018 11:53

@gargkshitiz public static boolean savePaket(int PaketID, Artikel atodb) { try { myCon=DriverManager.getConnection(url, user, pwd); System.out.println(atodb.getArtikelID()); System.out.println(atodb.getMenge()); myStatement.executeUpdate("INSERT INTO Relation VALUES(NULL, '"+ PaketID +"', '"+ atodb.getArtikelID() + "', '"+ atodb.getMenge() +"')"); //myStatement=null; <= Dont do that anymore! myRS=null; return true; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; }

LifeLifeLP 08.05.2018 11:56

@LifeLifeLP Поместите код в качестве исправления в свой вопрос, а не в комментарии. читать без правильного отступа - кошмар.

L.Spillner 08.05.2018 11:59

@ L.Spillner Извините, я опоздал, прежде чем он был закрыт, я сделаю это, однако в следующий раз, когда я спрошу здесь: S

LifeLifeLP 08.05.2018 12:00

myCon, myStatement кажутся переменными уровня класса, поэтому присвоение им значения null означает, что второй вызов метода вызовет NPE

gargkshitiz 08.05.2018 12:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
12
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пожалуйста, убедитесь в следующем

  • myStatement не равно нулю

  • atodb не равен нулю

Другие вопросы по теме