Я работаю на форме. В этой форме я беру запись из DataBase с помощью Name. Я собираю данные из текстового поля, которое определено в кадре другого класса. Я передаю эту строку функции searchData для ее извлечения из базы данных. Но когда я запускаю программу, он дает мне NullPoingerException для columnNames [] строковый массив, определенный для JTable. код выглядит следующим образом для класса panelShowData:Исключение NullPointer в JTable
package addPanel;
import java.sql.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class panelShowData extends JPanel
{
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
String url = "jdbc:mysql://localhost:3306/records";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "";
JScrollPane scrollPane;
JTable table;
DefaultTableModel tableModel;
String nameSearch="";
public panelShowData()
{
this.setLayout(null);
setVisible(true);
setBounds(0, 200, 500, 450);
}
public void searchData(String nameSearch)
{
try
{
Class.forName(driver).newInstance();
connection = DriverManager.getConnection(url, userName, password);
statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
resultSet = statement.executeQuery("select * from registration where firstname ='"
+ nameSearch
+ "'or lastname ='"
+ nameSearch + "'");
System.out.println("Query executed");
System.out.println("nameSearch="+nameSearch);
String firstName;
String lastName;
int counter = 0;
int id;
JButton add=new JButton("ADD");
while (resultSet.next())
{
System.out.print(resultSet.getString(2) + "\t");
System.out.print(resultSet.getString(4) + "\n");
firstName = resultSet.getString(2);
lastName = resultSet.getString(4);
id = resultSet.getInt(1);
String[ ] columnName = { "Id","First Name", "Last Name","click" };
Object[ ] data = { id, ""+firstName, "" + lastName, add };
tableModel.setColumnIdentifiers(columnName);
tableModel.addRow(data);
tableModel.fireTableDataChanged();
counter++;
}
table = new JTable(tableModel);
table.setEnabled(false);
scrollPane = new JScrollPane(table);
scrollPane.setBounds(10, 10, 350, 100);
scrollPane.revalidate();
add(scrollPane);
connection.close();
}
catch (Exception e)
{
e.printStackTrace();
JOptionPane.showMessageDialog( null, "Record Not Found",
"Sorry", JOptionPane.ERROR_MESSAGE);
}
}
}
Метод называешь является:
if (ae.getSource() == buttonSearch)
{
addform.setEnabled(false);
addform.setVisible(false);
remove(addform);
showData.revalidate();
showData.repaint();
add(showData);
String stringNameSearch="";
stringNameSearch = nameSearch.getText();
System.out.println("Name is"+stringNameSearch);
showData.searchData(stringNameSearch);
}
спасибо !!!! это решило мою проблему. пожалуйста, дайте мне услугу для другого! – vibhor
Теперь я хочу, чтобы в каждой таблице добавлялись кнопки для каждой записи. и я также хочу, чтобы для них были действительные исполнители. Что откроет эту запись, так как я могу сделать это внутри этого же кода. – vibhor