使用 MySQL 中的内容填充 JTable 时遇到问题。 首先,当我在控制台(system.out)上输出表的内容时,它起作用。 当我尝试在 JTable 上显示它时,会发生错误:NullPointerException。
代码:
import javax.swing.table.DefaultTableModel;
import java.sql.*;
import javax.swing.JOptionPane;
import net.proteanit.sql.DbUtils;
public class ProductTable extends javax.swing.JFrame {
public ProductTable() {
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/inventory_db","root","");
}catch(Exception ex){
System.out.println("Error: "+ex);
}
try{
String query = "SELECT * FROM items_in_hand";
st = con.prepareStatement(query);
rs = st.executeQuery(query);
System.out.println("Records from Inventory Database:");
itemTable.setModel(DbUtils.resultSetToTableModel(rs)); //this line here causes the error
while(rs.next()){
String iname = rs.getString("ItemName");
String price = rs.getString("Price");
String qty = rs.getString("Quantity");
System.out.println("Item: "+ iname +" Price (each): "+price+" Quantity: "+qty);
}
}
catch(Exception ex){
System.out.println("Error: "+ ex);
}
initComponents(); // i have long initComponent codes;
}
private void btn_addActionPerformed(java.awt.event.ActionEvent evt) {
message.setText("");
message2.setText("");
DefaultTableModel model = (DefaultTableModel) itemTable.getModel();
if(!txt_item.getText().trim().equals("")){
try{
String sql = "INSERT INTO items_in_hand (ItemName, Price, Quantity) VALUES (?,?,?)";
st = con.prepareStatement(sql);
st.setString(1,txt_item.getText());
st.setString(2,txt_price.getText());
st.setString(3,txt_quantity.getText());
st.execute();
JOptionPane.showMessageDialog(null , "Saved.");
model.addRow(new Object[] {txt_item.getText(),txt_price.getText(),txt_quantity.getText()});
message2.setText("Successfully Added.");
}catch(Exception ex){
JOptionPane.showMessageDialog(null , ex);
}
}
else{
message.setText("The Item name must be provided.");
}
}
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ProductTable().setVisible(true);
}
});
}
private Connection con;
private PreparedStatement st = null;
private ResultSet rs;
}
运行: 库存数据库中的记录: 错误:java.lang.NullPointerException
有人可以帮忙吗?
最佳答案
当您执行 new ProductTable().setVisible(true);
时,您的构造函数将被调用并执行从数据库获取数据的逻辑,
当您执行 itemTable.setModel();
itemTable 为 null 时,因为您没有初始化它,我相信您正在 initComponents();
方法中执行此操作,该方法得到稍后调用
关于java - 错误 : java. lang.NullPointerException(jtable),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25918569/