2013-04-23 2 views
0

Я работаю на форме. В этой форме я беру запись из 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);    
    } 

ответ

0

Вы не инициализировать поле tableModel. Таким образом, линия

tableModel.setColumnIdentifiers(columnName); 

вызывает NullPointerException.

+0

спасибо !!!! это решило мою проблему. пожалуйста, дайте мне услугу для другого! – vibhor

+0

Теперь я хочу, чтобы в каждой таблице добавлялись кнопки для каждой записи. и я также хочу, чтобы для них были действительные исполнители. Что откроет эту запись, так как я могу сделать это внутри этого же кода. – vibhor

Смежные вопросы