NullPointerException для запроса - PullRequest
       6

NullPointerException для запроса

2 голосов
/ 13 декабря 2011

Я получил NullPointerException ошибку после использования toString().substring().Мне нужно использовать этот метод.Помоги мне, пожалуйста.Я не совсем уверен, что смогу использовать этот метод внутри запроса.

Orginal

String selectItemMasDetl="select MMITNO,MMITDS,MMALUN,MMSPUN from"+DBConnect.SCHEMA+".mitmas where MMCONO=888 and MMITNO="+ItemNo+"'";

Использование ToString().substring()

 String selectItemMasDetl="select MMITNO,MMITDS,MMALUN,MMSPUN from"+DBConnect.SCHEMA+".mitmas where MMCONO=888 and MMITNO="+ItemNo.toString().substring(0,4)+"'";

журнал ошибок

 java.lang.NullPointerException
[12/13/11 16:24:28:594 SGT]  a6cc007 SystemErr     R    at com.------erp.report.stocklotsalesreport.StockLotSalesReportGet.getItemMasDetl

ANS:

selectItmMas="select MMITNO,MMITDS,MMALUN,MMSPUN from "+DBConnect.SCHEMA+".mitmas where MMCONO=888 and MMITNO like '"+ salesRecordListTO.getItemNo().trim() +"%'";

Я использую оператор like и параметр передачи вместо использования trim.Теперь я получаю желаемый результат.Большое вам спасибо, ребята.

Ответы [ 3 ]

1 голос
/ 13 декабря 2011

Это означает, что, по крайней мере, в некоторых случаях либо ItemNo, либо DBConnect, либо возвращаемое значение toString() (как предлагается) составляет null. Проблема в том, что у вас нет трассировки стека, и поэтому вы не можете быть уверены, куда выдается ошибка. Это может быть даже на другой линии, о чем мы (не) знаем сейчас.

Попробуйте обернуть try catch соответствующими строками и распечатать трассировку стека, проверить строку кода, где происходит, и опубликовать здесь снова. Вот как:

try {
    //code throwing exception
} catch (Exception ex) {
    ex.printStackTrace();
}

Примечание: кажется, что вам нужно пробел после, также вы закрываете одинарную кавычку, но я не вижу открытия. Ниже, для справки, ваш код, только переформатированный, не исправленный:

String selectItemMasDetl = "select MMITNO,MMITDS,MMALUN,MMSPUN from"
    + DBConnect.SCHEMA + ".mitmas where MMCONO=888 and MMITNO="
    + ItemNo.toString().substring(0,4) + "'";
0 голосов
/ 13 декабря 2011

Проверка на ноль - это одна из возможностей (самая простая), см. Ответ Stivlo.

В зависимости от того, насколько быстрым является запрос подсчета, запрос может быть выполнен, если count == 0 не беспокоитдля выполнения реального запроса.

Упс, извините, не читается хорошо: исключение NULL уже при построении строки запроса.Ну, может, это пригодится в вашем следующем исключении nullpointer:)

StringBuilder может быть решением, но я думаю, что вы получите недопустимую строку запроса, просто используйте ответ Stivlo.

0 голосов
/ 13 декабря 2011

NullPointerExeption означает, что ItemNo равен нулю, поэтому при попытке использовать ItemNo.toString() он будет интерпретирован как null.toString(), что приведет к исключению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...