使用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。现在我得到了我想要的结果。 非常感谢你们。
答案 0 :(得分:1)
这意味着至少在某些情况下,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) + "'";
答案 1 :(得分:0)
这意味着ItemNo
为null
。
你能发布它的价值吗?
答案 2 :(得分:0)
在这种情况下你确定Item不为null吗?
答案 3 :(得分:0)
NullPointerExeption
表示ItemNo为null,因此在尝试使用ItemNo.toString()
时,它将被解释为null.toString()
,它将抛出异常。
答案 4 :(得分:0)
对null的检查是一种可能性(最简单的),请参阅Stivlo的答案。
根据查询的快速程度,计数查询也可以完成,如果count == 0,则无需进行真正的查询。
哎呀,抱歉,读不好:null异常已经在构建查询字符串。好吧,也许这在你的下一个nullpointer异常中有用:)
StringBuilder可能是一个解决方案,但我认为你会得到一个无效的查询字符串,只需使用Stivlo的答案。