Я пытаюсь разработать JDBC-программу на основе jtable, которая создает таблицу, относящуюся к таблице, находящейся внутри базы данных. I создали два метода в качестве базы данныхHandler() и graphicsHandler() для обработки инструкций, связанных с базой данных и графикой . Coldata и rowdata содержат имена столбцов и resultdet rowdata.But, когда эти значения используются для рисования таблицы, я сталкиваюсь с исключением NullPointerException, но я не могу понять, почему. Любая помощь от кого-то наиболее ценится. Спасибо.Выполнение jtable показывает исключение
import java.awt.BorderLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class Final {
int columnno,rowno;
Connection connection;
PreparedStatement preparedStatement;
ResultSet resultSet;
ResultSetMetaData metaData;
Vector<String> coldata;
Vector<Object> rowdata,temp;
DefaultTableModel tableModel;
JScrollPane scrollPane;
JTable table;
public Final() {
// TODO Auto-generated constructor stub
ValueHolder holder = DatabaseHandler();
GraphicsHandler(holder.getCd(),holder.getRd());
}
private void GraphicsHandler(Vector<String> coldata, Vector<Object> rowdata) {
// TODO Auto-generated method stub
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout(0, 20)); //setting up horizontal and vertical gap
scrollPane.setViewportView(table);
scrollPane.setWheelScrollingEnabled(true);
frame.add(scrollPane, BorderLayout.CENTER);
tableModel = new DefaultTableModel(rowdata,coldata);
table = new JTable(tableModel);
frame.setVisible(true);
frame.pack();
}
private ValueHolder DatabaseHandler() {
// TODO Auto-generated method stub
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/company?user=username&password=password";
try {
Class.forName(driver);
connection = DriverManager.getConnection(url);
preparedStatement = connection.prepareStatement("select * from product");
resultSet = preparedStatement.executeQuery();
metaData = resultSet.getMetaData();
columnno = metaData.getColumnCount();
rowno = 1;
coldata = new Vector<String>();
for (int i = 1; i <= columnno; i++) {
coldata.add(metaData.getColumnLabel(i));
}
System.out.println();
rowdata = new Vector<Object>() ; temp = new Vector<Object>();
while (resultSet.next()) {
for (int i = 1; i <= columnno; i++) {
temp.add(resultSet.getString(i));
}
rowdata.add(temp.clone());
temp.clear();
rowno++;
}
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new ValueHolder(rowdata, coldata);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Final();
}
}
class ValueHolder {
Vector<Object> rd; Vector<String> cd;
public ValueHolder(Vector<Object> rowdata, Vector<String> coldata) {
this.rd = rowdata;
this.cd = coldata;
}
public Vector<Object> getRd() {
return rd;
}
public Vector<String> getCd() {
return cd;
}
}
Возможный дубликат [Что такое NullPointerException, и как это исправить?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do- я чиню это) –