我正在尝试使用以下代码从数据库中选择数据:

//DATABASE
ResultSet rs;
String polecenie;
Statement st;
String[] subj;

public void polacz() {
    try {
        Class.forName("com.mysql.jdbc.Driver");

        Connection pol=DriverManager.getConnection("jdbc:mysql://localhost:3306/testgenerator", "root", "pospaz");
        st = pol.createStatement();
        lblPolaczonoZBaza.setText("Połączono z bazą danych testgenerator");

    } catch (Exception ek) {
        statusMessageLabel.setText("Can't connect to d: "+ek);
    }


    polecenie = "select * from subjects";


    try {
        rs = st.executeQuery(polecenie);
        int i=0;
        while (rs.next()){
            subj[i] = rs.getString("name");
            i++;
        }
        st.close();
    } catch (Exception ek) {
        statusMessageLabel.setText("Can't select data: "+ek);
    }
}

第二个捕获显示异常:
java.lang.NullPointerException

我到处找都找不到解决办法。我很感激你的帮助。

最佳答案

我可以看到,你没有初始化String[] subj数组,所以当它到达subj[i] = ...时会窒息。您需要执行以下操作之一:
确定结果集中的行数,并初始化subj = new String[resultcount]
使用自动扩展容器(如ArrayList)而不是字符串数组

10-06 00:10