Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我试图用数据库数据填充java swing中的表时,出现java.lang.NullPointerException错误消息_Java_Sql_Swing - Fatal编程技术网

当我试图用数据库数据填充java swing中的表时,出现java.lang.NullPointerException错误消息

当我试图用数据库数据填充java swing中的表时,出现java.lang.NullPointerException错误消息,java,sql,swing,Java,Sql,Swing,我试图用数据库表中的数据填充JavaSwing中的jTable。以下是我设置连接的代码 package DBController.database; import java.sql.*; public class DBController { private Connection con; public void setUp(String dsn) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDr

我试图用数据库表中的数据填充JavaSwing中的jTable。以下是我设置连接的代码

    package DBController.database;

    import java.sql.*;

    public class DBController {
private Connection con;

public void setUp(String dsn) {
    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");          
    } catch (Exception e) {
        System.out.println("Load driver error");
    }
    try {

        String s = "jdbc:odbc:" + dsn;
        con = DriverManager.getConnection(s, "", "");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public ResultSet readRequest(String dbQuery) {
    ResultSet rs = null;
    try {
        Statement stmt = con.createStatement();
        rs = stmt.executeQuery(dbQuery);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return rs;
}

public int updateRequest(String dbQuery) {
    int count = 0;
    try {
        Statement stmt = con.createStatement();
        count = stmt.executeUpdate(dbQuery);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return count;
}

public void terminate() {
    try {
        con.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
}

下面是我试图为sql语句编写的代码

    public boolean retrieveDiscussion() {
    boolean success = false;
    ResultSet rs = null;
    DBController db = new DBController();
    db.setUp("IT Innovation Project");
    String dbQuery = "SELECT * FROM forumTopics WHERE topic_description = '" + description
            + "' and topic_category = '" + category
            + "' and topic_title = '" + title 
            + "' and topic_by = '" + postedBy + "'";
    rs = db.readRequest(dbQuery);
    db.terminate();
    return success;
}
以下是用户界面中“我的表”的代码

    public static void main(String[] args) throws Exception {
    // The Connection is obtained

    eForumTopics topics = new eForumTopics();
    topics.retrieveDiscussion();

    // It creates and displays the table
    JTable table = new JTable(buildTableModel(null));
    JOptionPane.showMessageDialog(null, new JScrollPane(table));

    // Closes the Connection
}
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);

    }
错误消息。那我该怎么办?提前谢谢。

看起来这个bug是

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

请给出错误的完整堆栈跟踪,即行号等。同时创建一个带有随机值等的表,因为我们无法测试线程“main”java.lang.NullPointerException中没有表ETCEException的代码,该线程位于kioskeForum.ui.eForumDiscussion.buildTableModel(eForumDiscussion.java:271)的kioskeForum.ui.eForumDiscussion.main(eForumDiscussion.java:262)但在我删除空值后,buildTableModel将有错误。如果我从public static DefaultTableModel buildTableModel中删除结果集rs,则之后的所有“R”都将有错误。实际上,我从某个网站获取了代码。这些是完整的代码。public static void main(字符串[]args)抛出异常{//连接已获得ResultSet rs=stmt.executeQuery(“从产品_信息中选择*);//它创建并显示表JTable table=new JTable(buildTableModel(rs));JOptionPane.showMessageDialog(null,new JScrollPane(table));//关闭连接}然而,在那里的stmt,错误消息要求我投射一些东西。我不知道投射对象是如何工作的。即使我研究也没有答案。
JTable table = new JTable(buildTableModel(null));