java mysql:表行作为包含字符串的对象

时间:2015-08-11 13:48:03

标签: java mysql arrays string jdbc

我创建了一个类(Employee),它只包含java中的数据成员以匹配employee表的行。 String Name,int Age,double Salary等。

接下来,我创建一个固定维度为50的对象employee emp[]=new employee[50]数组,并从mySQL DB中读取一些数据行并逐个存储在此对象数组中。 然后,该对象数组由方法返回给调用方法。 接下来,我想像这样

在while循环中处理这个对象数组
while(!emp[arraycounter].Name.equals(""))

我想,我正在检查名称为空的对象数组的第一个元素。

这会抛出NullPointerException。我错过了什么? 实际上,我希望能够将此对象数组的元素传递给方法,这些方法被声明为接受employee类的对象作为参数。

周六

2 个答案:

答案 0 :(得分:-1)

例如,如果数据库中只有35行,则当执行emp [35]时,该员工为空。因此,当您执行emp [35] .Name时,您将获得NPE。 一些建议:

1 /使用小写的属性

2 /更好的用户“”.equals(字符串)比string.equals(“”)以避免NPE

3 /只需使用列表而不是数组:

List<Employee> employees= new ArrayList<Employee>();
employees.add(The data extracted form db)

答案 1 :(得分:-1)

首先,您必须包含完整的代码供我们分析。

其次,让我有点烦人 - 不要从外面访问属性。将它们设置为private并创建getName和setName方法,依此类推。这是一个很好的做法。

现在,对于您的问题 - 您要么没有初始化对象或其中的属性。也就是说,在员工构造函数中,您应该拥有所有属性的默认值(例如Name="";),并且在读取数据之前,您应该初始化整个数组(如for(i=0;i<50;i++) emp[i]=new Employee();)。

你可能错过了其中一个。没有代码就不可能说出哪一个。