Java 方法不生成JTable

Java 方法不生成JTable,java,sqlite,Java,Sqlite,我在当地遗嘱认证法庭工作,我们提供的一项服务是电子邮件提醒。他们填写一张表格,并将其输入到系统中,然后在到期时通知他们。我被允许创建一个程序,允许我从表格中输入信息,以跟踪已注册的律师 import java.sql.*; import java.util.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; public class Attempt1 { public static void setConn

我在当地遗嘱认证法庭工作,我们提供的一项服务是电子邮件提醒。他们填写一张表格,并将其输入到系统中,然后在到期时通知他们。我被允许创建一个程序,允许我从表格中输入信息,以跟踪已注册的律师

import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class Attempt1 {

public static void setConnection() throws SQLException {
    Connection conn = null;
    Statement state = null;

    try {
        Class.forName("org.sqlite.JDBC");
        conn = DriverManager.getConnection("jdbc:sqlite:dummy3.db");
    } catch (Exception e) {
        e.printStackTrace();
    }

    setStatement(conn, state);
    setInsert(conn, state);
    setQuery(conn, state);

}

// Test method
public static void setStatement(Connection conn, Statement state)
        throws SQLException {

    state = conn.createStatement();

    String sql = "CREATE TABLE IF NOT EXISTS ATTORNEY "
            + "(ID INT PRIMARY KEY     NOT NULL,"
            + " NAME             TEXT    NOT NULL, "
            + " EMAIL     CHAR(50), " + " DATE             TEXT  NOT NULL)";
    state.executeUpdate(sql);

}

public static void setInsert(Connection conn, Statement state)
        throws SQLException {

    int entries;
    int i = 0;
    String input;
    String sql = "";

    state = conn.createStatement();

    Scanner keyboard = new Scanner(System.in);

    System.out.print("How many entries will you insert?");
    entries = keyboard.nextInt();
    keyboard.nextLine();

    while (i < entries) {

        System.out
                .println("Enter the values for ID, NAME, EMAIL, and DATE");
        input = keyboard.nextLine();

        sql = "INSERT INTO ATTORNEY (ID, NAME, EMAIL, DATE) " + "VALUES ("
                + input + ");";

        state.executeUpdate(sql);

        i++;
    }

}

// Test method
public static void setQuery(Connection conn, Statement state)
        throws SQLException {

    state = conn.createStatement();

    String sql = "SELECT * FROM ATTORNEY";



    ResultSet result = state.executeQuery(sql);

    /*
     * while (result.next()) {
     * 
     * String name = result.getString("NAME"); long age =
     * result.getLong("ID");
     * 
     * System.out.println(name); System.out.println(age); }
     */

    JTable table = new JTable(buildTableModel(result));

    JOptionPane.showMessageDialog(null, new JScrollPane(table));

     result.close();
     state.close();

}

public static DefaultTableModel buildTableModel(ResultSet rs)
        throws SQLException {

    ResultSetMetaData metaData = rs.getMetaData();

    // names of columns
    Vector<String> columnNames = new Vector<String>();
    int columnCount = metaData.getColumnCount();
    for (int column = 1; column <= columnCount; column++) {
        columnNames.add(metaData.getColumnName(column));
    }

    // data of the table
    Vector<Vector<Object>> data = new Vector<Vector<Object>>();
    while (rs.next()) {
        Vector<Object> vector = new Vector<Object>();
        for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
            vector.add(rs.getObject(columnIndex));
        }
        data.add(vector);
    }

    return new DefaultTableModel(data, columnNames);

}

public static void main(String[] args) throws SQLException {

    setConnection();

}
}
在setInsert方法之前添加setQuery方法并保留第二个setQuery,它将在条目之前和之后显示表。它并没有解决我的问题,有趣的是它确实显示了表,并在setInsert方法之后正确地终止了程序

第二次更新:


昨晚我关掉电脑时注意到了一些东西。当我的程序关闭时,我注意到背景中有一个Jtable。在今天闲逛之后,我意识到它实际上是在桌面上显示Jtable。我必须将Eclipse最小化到桌面才能看到这一点。我以前从未见过这种情况,不幸的是,我无法用在谷歌上产生结果的方式来表达它

为了解决这样的问题,您可以使用IDE的调试器@Synesso我一直在努力理解如何正确使用IDE的调试器。我将对它做更多的阅读,利用它来避免将来通过调试可以解决的问题。问@DanceRandyDance这个问题没有坏处。不过我想让你知道调试器。现在我回家了,我可以试试了。在我离开工作之前,有人给了我一个答案,我相信这是一个解释,但它似乎被删除了。
setStatement(conn, state);
setQuery(conn, state);
setInsert(conn, state);
setQuery(conn, state);