java - 错误 : java. lang.NullPointerException(jtable)

标签 java mysql swing

使用 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/

相关文章:

java - 是否可以让 Gson 跳过类型错误的字段?

java - 访问 JpaRepository 的 @Aspect 中的 EntityManager

php - 无法从 php 脚本访问表数据

java - 将局部变量传递到 JTextbox

Java Jlist 文本居中对齐

java - 通过 Maven 集成测试 Flex/Java Web 应用程序的最佳方法?

java - 如何获取排序数据使用 namequery

python - 通过使用标题作为列名加载 csv 文件来创建数据库(并添加以文件名作为名称的列)

php - 使用正则表达式删除 PHP 中的字符

java - setContentPane 覆盖了所有内容并且 JButton 无法正常工作