Java MySQL返回NPE从表中获取ID(作为字符串)
下表: id用户名密码创建日期 id=c235a95d-58e7-4454-90ea-58396a00a3c5用户名=我的用户名 密码=[BLOB-16 B]创建日期=2017年4月28日星期五09:34:49英国夏令时Java MySQL返回NPE从表中获取ID(作为字符串),java,sql,jdbc,Java,Sql,Jdbc,下表: id用户名密码创建日期 id=c235a95d-58e7-4454-90ea-58396a00a3c5用户名=我的用户名 密码=[BLOB-16 B]创建日期=2017年4月28日星期五09:34:49英国夏令时 那么为什么它会返回null呢?我认为我在结果集字符串应该介于两个'username'之间,并且您已经使用了PreparedStatement,因此请改用: private UUID getClientID(String username) { try {
那么为什么它会返回null呢?我认为我在
结果集
字符串应该介于两个'username'
之间,并且您已经使用了PreparedStatement
,因此请改用:
private UUID getClientID(String username) {
try {
String query = "SELECT id FROM `client_table` WHERE username=" + username;
stmt = connection.prepareStatement(query);
ResultSet rs = stmt.getResultSet();
return UUID.fromString(rs.getString(2));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
注意
rs.getString(2)
没有第二个字段是错误的rs.next()
获得结果字符串应该介于两个
'username'
之间,并且您已经使用了PreparedStatement
,因此请改用:
private UUID getClientID(String username) {
try {
String query = "SELECT id FROM `client_table` WHERE username=" + username;
stmt = connection.prepareStatement(query);
ResultSet rs = stmt.getResultSet();
return UUID.fromString(rs.getString(2));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
注意
rs.getString(2)
没有第二个字段是错误的rs.next()
获得结果它返回null,因为您的方法正在捕获错误,然后返回null。NPE在哪里?是否有堆栈跟踪?您需要先执行查询,然后才能获得结果集。它返回null,因为您的方法正在捕获错误,然后返回null。NPE在哪里?你有堆栈跟踪吗?你需要先执行查询才能得到结果集。简短有效的回答:)+1非常感谢!当我没有学习教程,也没有导师时,自己解决MySQL问题是非常困难的。@J.Doe你可以使用我已经分享的链接,你可以理解更多的好运:)简短有效的回答:)+1非常感谢!当我没有遵循教程,也没有导师时,自己解决MySQL问题非常困难。@J.Doe您可以使用我已经分享的链接,您可以了解更多的好运:)