当我试图用数据库数据填充java swing中的表时,出现java.lang.NullPointerException错误消息
我试图用数据库表中的数据填充JavaSwing中的jTable。以下是我设置连接的代码当我试图用数据库数据填充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
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));