Java忽略数据库中的NullPointerException?
我是来自C#的Java新手。我一直在想办法,但我做不好 假设我们有一个包含以下内容的表:Java忽略数据库中的NullPointerException?,java,database,nullpointerexception,Java,Database,Nullpointerexception,我是来自C#的Java新手。我一直在想办法,但我做不好 假设我们有一个包含以下内容的表: _id | body | partner_jid | bin_id ---------------------------------------------------------- 1 | Hello | jid_2933219 | group_30 2 | null
_id | body | partner_jid | bin_id
----------------------------------------------------------
1 | Hello | jid_2933219 | group_30
2 | null | jid_2933219 | group_30
3 | !cmd | jid_2933219 | group_30
4 | An | jid_2933219 | group_30
5 | Example | jid_2933219 | group_30
好的,所以基本上需要做的是,扫描行主体以“!cmd”开头的文本(如果找到了,就做些什么)。但是,一旦它降到第2位,程序就会退出并返回一个NullPointerException
我目前有:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class main {
public static void main(String[] args) {
try {
Class.forName("org.sqlite.JDBC");
System.out.println("Load driver success");
Connection connection = DriverManager.getConnection("jdbc:sqlite:data.db");
String query = "Select * from messagesTable";
Statement statement = connection.createStatement();
ResultSet result = statement.executeQuery(query);
while(result.next()) {
int msgId = result.getInt("_id");
String msgBody = result.getString("body");
String usrId = result.getString("partner_jid");
String grpId = result.getString("bin_id");
if(grpId.equals("group_30")){
System.out.println(msgId);
System.out.println(msgBody.toLowerCase().trim());
System.out.println(usrId);
if(msgBody.contains("!cmd")){
System.out.println("Command found!");
}
}
}
} catch (Exception e) {
System.out.println("Read file error");
e.printStackTrace();
}
}
}
日志:
如何让它忽略NullPointerException并继续下一个呢
if(msgBody.contains("!cmd")){
System.out.println("Command found!");
}
如果我删除这一行,它不会给出NullPointerException,只是像它应该的那样打印整个表,但是我需要让它在出现错误时做一些事情!cmd被找到了,我该怎么做呢
提前谢谢 在检查是否包含
字符串之前,使用布尔值和(&&&
)检查null
。差不多
if (msgBody != null && msgBody.contains("!cmd")) {
// ...
}
使用布尔值
和(&&
)检查空值
,然后再检查它是否包含字符串
。差不多
if (msgBody != null && msgBody.contains("!cmd")) {
// ...
}
您可以简单地为每个字符串添加一个空检查;然而,这是相当粗糙和不漂亮的。如果我是你,我会使用org.apache.commons.lang3包的StringUtils。您可以在那里执行StringUtils.StartWith或StringUtils.contains等操作。。。等等,见课堂。但所有这些支票对你来说都是零安全的,而且它们看起来很漂亮,对你来说大部分都有用 您可以简单地为每个字符串添加一个空检查;然而,这是相当粗糙和不漂亮的。如果我是你,我会使用org.apache.commons.lang3包的StringUtils。您可以在那里执行StringUtils.StartWith或StringUtils.contains等操作。。。等等,见课堂。但所有这些支票对你来说都是零安全的,而且它们看起来很漂亮,对你来说大部分都有用 回避往往是最好的预防措施。不要使用variable.equals(“常量”)这一悲伤而常见的做法,而是使用“constant.equals”(变量)这一ihe(我讨厌例外)技术。ihe技术保证不会为字符串比较抛出空指针异常。它提供了许多空安全版本的字符串方法(例如:contains)。避免通常是最好的预防措施。不要使用variable.equals(“常量”)这一悲伤而常见的做法,而是使用“constant.equals”(变量)这一ihe(我讨厌例外)技术。ihe技术保证不会为字符串比较抛出空指针异常。它提供了许多空安全版本的字符串方法(例如:contains)!我检查了“null”而不是null。现在可以了!谢谢这就是答案!我检查了“null”而不是null。现在可以了!谢谢