Учитывая, что вы не указали номер строки 164, я предполагаю, что это:
if (rst.getString(2).equals(name) && rst.getString(3).equals(family) && rst.getString(4).equals(fatherName) && rst.getString(5).equals(mName) && rst.getString(6).equals(dOfBirth) && rst.getString(7).equals(pOfBirth))
Во-первых, мне хочется плакать.
Давайте исправим это:
String a;
String b;
String c;
String d;
String e;
String f;
a = rst.getString(2);
b = rst.getString(3);
c = rst.getString(4);
d = rst.getString(5);
e = rst.getString(6);
f = rst.getString(7);
if (!(a.equals(name))
{
bool = false;
}
if(!(b.equals(family))
{
bool = false;
}
if(!(c.equals(fatherName))
{
bool = false;
}
if(!(d.equals(mName))
{
bool = false;
}
if(!(e.equals(dOfBirth))
{
bool = false;
}
if(!(f.equals(pOfBirth))
{
bool = false;
}
По крайней мере, это покажет вам строку с нулевым указателем (при условии, что мое предположение верно).
Кроме того, это ужасные имена ... вы должны выбрать лучшие, чем я.
Реальное решение здесь состоит в том, чтобы использовать объектно-ориентированное программирование по назначению ... давайте создадим класс Person:
public class Person
{
private final String firstName;
private final String lastName;
private final String middleName; // guessing that is what mName is...
private final String fathersName;
private final String dateOfBirth;
private final String placeOfBirth; // guessing that is what pOfBirth is...
public Person(final String firstName,
final String lastName,
final String middleName,
final String fathersName,
final String dateOfBirth,
final String placeOfBirth)
{
if(firstName == null)
{
throw new IllegalArgumentException("firstName cannot be null");
}
if(lastName == null)
{
throw new IllegalArgumentException("lastName cannot be null");
}
... etc for all of the other arguments ...
// I would never do the this.fristName thing.. .I would name the parameter different than the instance vairable...
this.firstName = firstName;
this.lastName = lastName;
... etc for all of the other arguments ...
}
public boolean equals(final Object o)
{
final Person person;
if(!(o instanceof Person))
{
return (false);
}
other = (Person)o;
// the code you I put above + your code for checking if they are equal
}
public int hashCode()
{
// this is probably good enough
return (firstName.hashCode() + lastName.hashCode());
}
}
Тогда в вашем методе вы бы получили что-то вроде:
rst = stmt.executeQuery("SELECT * FROM birthtable");
while (rst.next())
{
final Person person;
// I would use temp variables rather than passing in the result of getString directly...
person = new Person(rst.getString(2),
rst.getString(3),
rst.getString(4),
rst.getString(5),
rst.getString(6),
rst.getString(7));
// otherPerson would be passed into the method instead of the String you are passing now
bool = person.equals(otherPerson);
... etc ...
}