gpt4 book ai didi

java - 使用代码从数据库创建jtable并在其中显示数据库表记录

转载 作者:行者123 更新时间:2023-12-01 14:49:09 25 4
gpt4 key购买 nike

哟,我正在尝试在 jFrame 中添加 jTable,并且我想将数据库表中的记录显示到 jTable。

我能够创建一个jTable(我将代码放在构造函数中)并在代码中手动输入要显示的值。有效。但是当我尝试调用从数据库检索数据的方法并尝试将它们显示在 jtable 中时。它给了我一个错误“NullPointerException”。

创建表的构造函数中的代码:

    String[] columnname = {"Subject Code", "Prelim", "Midterm", "SemiFinal", "Finals"};
setTable();
Object[][] data = {};

gradetable = new JTable(data, columnname){
public boolean isCellEditable(int data, int columns){
return false;
}

public Component prepareRenderer(TableCellRenderer r, int data, int columns){
Component c = super.prepareRenderer(r, data, columns);

if (data % 2 == 0){
c.setBackground(Color.GRAY);
}
else{
c.setBackground(Color.WHITE);
}

if (isCellSelected(data, columns)){
c.setBackground(Color.ORANGE);
}
return c;
}
};
gradetable.setPreferredScrollableViewportSize(new Dimension (400, 150));
gradetable.setFillsViewportHeight(true);
jsp = new JScrollPane(gradetable);

我用来从数据库检索数据并将其添加到表中的方法:

private void setTable(){
DefaultTableModel model = (DefaultTableModel)gradetable.getModel();
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con = (Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/grading","root","");
Statement st = con.createStatement();
String sql = "SELECT * FROM student INNER JOIN grade ON student.idnumber = grade.idnumber WHERE student.idnumber = '2010-00125'";
ResultSet rs = st.executeQuery(sql);
model.setRowCount(0);
while (rs.next()){

//this.setName(rs.getString("name"));
//this.setCourse(rs.getString("course"));
//this.setYear(rs.getString("year"));

String d1, d2, d4, d3, d5;

d1 = rs.getString("subjectcode");
d2 = rs.getString("prelim");
d3 = rs.getString("midterm");
d4 = rs.getString("semifinal");
d5 = rs.getString("finals");

model.addRow(new Object[]{d1,d2,d3,d4,d5});
}
rs.close();
con.close();
}catch(ClassNotFoundException | SQLException ex){
JOptionPane.showMessageDialog(null, ex);
}
}

最佳答案

出现NPE的原因是您正在调用setTable,它试图在此处获取JTable模型:

DefaultTableModel model = (DefaultTableModel)gradetable.getModel();

这是在您实际实例化 gradetable 之前,因此会抛出 NPE

除此之外,在设置JTable的模型时,您需要使用DefaultTableModel,否则您将在这一行得到一个ClassCastException .

关于java - 使用代码从数据库创建jtable并在其中显示数据库表记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15051179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com