无法使用JTable在表中显示结果

时间:2013-12-25 02:54:19

标签: java jdbc jtable

我有一个名为“查看记录”的按钮。我的想法是,当我单击它时,它会在表格中显示数据库中的所有记录。 我能够从数据库中检索记录并使用System.out.println或JOptionPane.showMessageDialog函数显示它们,但是当尝试使用Jtable显示它时,我似乎无法弄清楚我做错了什么。 我是Java的新手,并试图自学一些,但我已经坚持了一段时间。非常感谢帮助。

import net.proteanit.sql.DbUtils;

JTable employee_table;

class home extends JFrame implements ActionListener 
public void actionPerformed(ActionEvent click)

if(click.getSource()==view_records)
  {

     try
     {
           Class.forName("com.mysql.jdbc.Driver");
           Connection connect=DriverManager.getConnection("jdbc:mysql://privatedb/employee","sava","123456");
           Statement stmt=connnect.createStatement();
           ResultSet rsemp = stmt.executeQuery("SELECT * FROM employee");
employee_table.setModel(DbUtils.resultSetToTableModel(rsemp));

}
catch(Exception e){
        System.out.println(e.getMessage());
} finally {

3 个答案:

答案 0 :(得分:2)

  1. 这不是Swing问题,而是Java问题 - 如果变量为null,则无法使用它们。首先需要为它们分配对象。
  2. 因此,如果您获得NullPointerException,请查看该行,然后检查您尝试在该行上使用哪个变量并进行修复。
  3. 在此,您需要创建一个新的JTable并将其分配给JTable变量。
  4. 继续学习并继续阅读。首先考虑学习基本的 Java ,然后再转到 Swing
  5. 将来,如果您遇到类似问题,请在问题中发布错误消息,显示代码中的哪一行导致错误(错误/异常消息会告诉您)。

答案 1 :(得分:0)

  1. 首先,你必须下载一个库文件rs2xml.jar(容易获得)。
  2. 把它/包含到你的应用程序库中
  3. 导入库文件     import net.proteanit.sql.DbUtils;
  4. 通过

    连接到数据库
    private void connecting()  {
    
    try
      {
    
      JavaDBConnectivity dbobj=new JavaDBConnectivity();
    
      conn=dbobj.Connect();
      }
    catch(Exception e){
    
        JOptionPane.showMessageDialog(null,e );
      }
    }  
    

    //我希望你创建了一个连接数据库的类(这里是JavaDBConnectivity)

  5. 你可以创建一个按钮,然后在鼠标点击上添加一个事件(使用netbeans轻松完成)

        private void submit_queryMouseClicked(java.awt.event.MouseEvent evt) {                                          
    
    
        try{ 
             connecting();
           //  String query ="select * from "database name""; //use this or if u have text area for entering use the below statement                    
              String query=QueryArea.getText(); 
    
             pst = conn.prepareStatement(query);
    
             rs = pst.executeQuery();
             s.append (QueryArea.getText()).append("\n");
             jTable.setModel(DbUtils.resultSetToTableModel(rs));
    
    
    
           }
          catch(Exception e){
    
              JOptionPane.showMessageDialog(null,e );
         } 
        }                            
    

答案 2 :(得分:0)

获取ResultSet rsemp后,使用以下代码

DefaultTableModel dtm=(DefaultTableModel) employee_table.getModel();

 while(rsemp.next()){

   Vector v1=new Vector();

//in the below manner do this for all the columns in ur table

   v1.add(rsemp.getString("column1Name"));

   v1.add(rsemp.getString("column2Name"));

//after adding like that

dtm.addRow(v1);

}