无论如何,使用 rs.next() 加载 java 数组都会抛出空指针错误。使用控制台检查 [重复]

Loading a java array with rs.next() throws null pointer error no matter what. Checked with console [duplicate]

提问人:Martincho 提问时间:2/21/2019 更新时间:2/21/2019 访问量:34

问:

我有一张非常简单的桌子。

╔════╦═══════╗
║ id ║ title ║
╠════╬═══════╣
║ 1  ║ cow   ║
║ 2  ║ duck  ║
╚════╩═══════╝

ID 为 INT

标题为文本

我正在尝试用这两个寄存器填充数组。

collection 类的构造函数为 (int,String)

我的代码:

collection[] co=null;

String query="SELECT * FROM collection";
   ps=conn.prepareStatement(query);
   rs=ps.executeQuery();
   int counter=0;
        while(rs.next()) {
            co[counter]=new colleccion(rs.getInt("id"),rs.getString("title"));
            System.out.println(rs.getInt("id"));
            System.out.println(rs.getString("title"));
            counter++;
        }

System.out.println 工作正常,值显示正确。 但它一旦到达数组行就会抛出异常。

也尝试使用列号(1 和 2),但它是相同的。

请帮忙。

java 数组 sqlite nullpointerException 结果集

评论

0赞 Arnaud Denoyelle 2/21/2019
collection[] co=null; co[counter]=
0赞 Martincho 2/21/2019
我通宵编码了大约 +18 小时,很难理解任何事情。错误是什么?

答:

1赞 Arnaud Denoyelle 2/21/2019 #1

这里:

collection[] co=null;
[...]
co[counter]=...

您正在尝试为数组赋值,该值为 。null

在将值放入数组之前,必须初始化数组:collection[] co= new collection[42]

但是,由于您可能事先不知道所需的大小,因此您可能希望将项目存储在List

List<collection> co = new ArrayList<>();
co.add(new collection(rs.getInt("id"),rs.getString("title")));

注意:对于一个类来说,这是一个可怕的名称。 你应该改变它。类名应以大写字母开头,并且已被采用(并被广泛使用)。collectionCollection

评论

0赞 Martincho 2/21/2019
谢谢!实际上是西班牙语中的“coleccion”。为了清楚起见,我做了翻译。