0
양식에서 작업 중입니다. 이 양식에서는 Name을 사용하여 DataBase에서 레코드를 가져옵니다. 다른 클래스, 즉 프레임에 정의 된 텍스트 필드에서 데이터를 수집합니다. 이 문자열을 데이터베이스에서 가져 오기위한 searchData 함수에 전달합니다. 하지만 프로그램을 실행할 때 columnNames []에 대한 NullPoingerException이 JTable에 대해 정의 된 문자열 배열을 제공합니다. 코드는 클래스 panelShowData에 대해 다음과 같습니다JTable의 NullPointer 예외
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