查询的NullPointerException

时间:2011-12-13 08:49:08

标签: java nullpointerexception

使用NullPointerException后出现toString().substring()错误。我需要使用这种方法。请帮帮我。我不太确定我可以在查询中使用该方法。

原单

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 operator和pass参数而不是使用trim。现在我得到了我想要的结果。 非常感谢你们。

5 个答案:

答案 0 :(得分:1)

这意味着至少在某些情况下,ItemNoDBConnecttoString()(按建议)的返回值为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) + "'";

答案 1 :(得分:0)

这意味着ItemNonull

你能发布它的价值吗?

答案 2 :(得分:0)

在这种情况下你确定Item不为null吗?

答案 3 :(得分:0)

NullPointerExeption表示ItemNo为null,因此在尝试使用ItemNo.toString()时,它将被解释为null.toString(),它将抛出异常。

答案 4 :(得分:0)

对null的检查是一种可能性(最简单的),请参阅Stivlo的答案。

根据查询的快速程度,计数查询也可以完成,如果count == 0,则无需进行真正的查询。

哎呀,抱歉,读不好:null异常已经在构建查询字符串。好吧,也许这在你的下一个nullpointer异常中有用:)

StringBuilder可能是一个解决方案,但我认为你会得到一个无效的查询字符串,只需使用Stivlo的答案。