【发布时间】:2020-07-26 12:55:08
【问题描述】:
我正在尝试将 SQL 结果中的变量分配给数组元素,但它一直显示 java.lang.NullPointerException。我试图声明上面的数组,但它似乎不起作用。异常没有显示错误所在的行,但是我编写了打印语句来找出异常位置,然后我发现当我打印activity[i] 的值时,它等于null。
代码如下:
package main;
import java.awt.EventQueue;
public class ACTIVITY {
private Connection con;
private Statement stm;
private String sql;
private ResultSet rs;
private static int c_id=-1;
private static int s_id=-1;
private int a_id=-1;
private String activity[]=new String[5];
private int activityID[] =new int[5];
public static JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ACTIVITY window = new ACTIVITY();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public ACTIVITY() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(null);
panel.setVisible(true);
try {
Class.forName("com.mysql.jdbc.Driver");
con=
DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","****" , "********");
stm= con.createStatement();
sql="Select * from activity where sid="+s_id;
rs=rs=stm.executeQuery(sql);
String name=" ";int i=0;
while(rs.next()){
name=rs.getString("a_name");
a_id=rs.getInt("a_id");
activity[i]=name;//after this assignment it always equal null
activityID[i]=a_id;
i++;
}
//the rest of the code
con.close();
} catch(Exception e) {System.out.println(e); }
}
}
【问题讨论】:
-
您忘记拨打
initialize()了吗?您确定有与该查询匹配的行吗? -
您是否在 while 循环之前实例化了您的活动数组?看起来您对代码进行了 sn-ped... 如果您可以编辑此问题并将 main 方法与所有相关调用包括在内,以及您在 while 循环中使用的变量的任何初始化,那么准确回答会更容易.
-
@Savior 我打电话给
initialize()并且有匹配的行。当我打印出name时,它有一个值,但是当我打印出activity[i]时,它等于null。 -
@ZachRieck 我根据需要编辑了代码。
标签: java arrays nullpointerexception assign