Instrução Update no BD

Bom dia,

Peço mais uma vez a ajuda de vocês. Ao digitar a instrução no aplicativo abaixo, o sistema acusa erro, porém, ao acessar o BD no mysql vejo que ele executou e alterou o salário. Alguém poderia me informar aonde estou errando ? Segue a classe ResultSetTableModel1 e o aplicativo AumentaSalario.


package com.deitel.jhtp6.empregados;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.table.AbstractTableModel;

public class ResultSetTableModel1 extends AbstractTableModel
{
	private Connection connection;
	private Statement statement;
	private ResultSet resultSet;
	private ResultSetMetaData metaData;
	private int numberOfRows;
	
	//monitora o status da conexão de banco de dados
	private boolean connectedToDatabase = false;
	
	//construtor inicializa resultSet e obtém seu objeto de metadados;
	//determina número de linhas
	public ResultSetTableModel1( String driver, String url,
			String userName, String password, String query ) throws SQLException, ClassNotFoundException	
	{
		//carrega classe de driver do banco de dados
		Class.forName( driver );
		
		//conecta-se ao banco de dados
		connection = DriverManager.getConnection(url, userName, password);
		
		//cria statement para consultar banco de dados
		statement = connection.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY );
		
		//atualiza status de conexão de banco de dados
		connectedToDatabase = true;
		
		//configura consulta e a executa
		setQuery( query );		
	}//fim do construtor ResultSetTableModel
	
	//obtém a classe que representa o tipo de coluna
	public Class getColumnClass( int column ) throws IllegalStateException
	{
		//assegura que o banco de dados conexão está disponível
		if( !connectedToDatabase )
			throw new IllegalStateException( "Not connected to Database" );
		
		//determina a classe java de coluna
		try
		{
			String className = metaData.getColumnClassName( column + 1 );
			
			//retorna objeto Class que representa className
			return Class.forName( className );
		}//fim do try
		catch( Exception exception )
		{
			exception.printStackTrace();
		}//fim do catch
		
		return Object.class;//se ocorrerem os problemas acima, assume tipo Object
	}//fim do método getColumnClass
	
	//obtém número de colunas em ResultSet
	public int getColumnCount() throws IllegalStateException
	{
		//assegura que o banco de dados conexão está disponível
		if( !connectedToDatabase )
			throw new IllegalStateException("Not connected to Database");
		
		//determina número de colunas
		try
		{
			return metaData.getColumnCount();
		}//fim do try
		catch( SQLException sqlException )
		{
			sqlException.printStackTrace();
		}//fim do catch
		
		return 0;//se ocorrerem os problemas acima, retorna 0 para o número de colunas
	}//fim do método getColumnCount
	
	//obtém nome de uma coluna particular em ResultSet
	public String getColumnName( int column ) throws IllegalStateException
	{
		//assegura que o banco de dados conexão está disponível
		if( !connectedToDatabase )
			throw new IllegalStateException( "Not connected to Database" );
		
		//determina o nome de colunas
		try
		{
			return metaData.getColumnName( column + 1);
		}//fim do try
		catch( SQLException sqlException )
		{
			sqlException.printStackTrace();
		}//fim do catch
		
		return "";//se ocorrerem problemas, retorna string vazia para nome de coluna
	}//fim do método getColumnName
	
	//retorna múmero de linhas em ResultSet
	public int getRowCount() throws IllegalStateException
	{
		//assegura que o banco de dados conexão está disponível
		if( !connectedToDatabase )
			throw new IllegalStateException( "Not connected to Database" );
		
		return numberOfRows;
	}//fim do método getRowCount;
	
	//obtém valor na linha e coluna particular
	public Object getValueAt( int row, int column ) throws IllegalStateException
	{
		//assegura que o banco de dados conexão está disponível
		if( !connectedToDatabase )
			throw new IllegalStateException("Not connected to Database");
		
		//obtém um valor na linha e coluna de ResultSet especificada
		try
		{
			resultSet.absolute( row + 1 );
			return resultSet.getObject( column + 1 );
		}//fim do try
		catch( SQLException sqlException )
		{
			sqlException.printStackTrace();
		}//fim do catch
		
		return "";
	}//fim do método getValueAt
	
	//configura nova string de consulta de banco de dados
	public void setQuery( String query ) throws SQLException, IllegalStateException
	{
		//assegura que o banco de dados conexão está disponível
		if( !connectedToDatabase )
			throw new IllegalStateException("Not connected to Database");
		
		//especifica consulta e a executa
		//resultSet = statement.executeQuery(query);
		
		int atualizaDados = statement.executeUpdate(query);		
		
		//obtém metadados para ResultSet
		metaData = resultSet.getMetaData();
		
		//determina o número de linhas em ResultSet
		resultSet.last();//move para a última linha
		numberOfRows = resultSet.getRow();//obtém número de linha
		
		//notifica a JTable de que modelo foi alterado
		fireTableStructureChanged();		
	}//fim do método setQuery
	
	//fecha Statement e Connection
	public void disconnectFromDatabase()
	{
		if( !connectedToDatabase )
			return;
		
		//fecha Statement e Connection
		try
		{
			statement.close();
			connection.close();
		}//fim do try
		catch( SQLException sqlException )
		{
			sqlException.printStackTrace();
		}//fim do catch
		finally//atualiza status de conexão de banco de dados
		{
			connectedToDatabase = false;
		}//fim do finally		
	}//fim do método disconnectFromDatabase
}//fim da classe ResultSetTableModel
//Aumente 10% do salário base de todos os empregados comissionados com salário base

package com.deitel.jhtp6.empregados;

import java.awt.BorderLayout;
import java.awt.DisplayMode;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.SQLException;
import java.util.Scanner;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JOptionPane;
import javax.swing.ScrollPaneConstants;


public class AumentaSalario extends JFrame
{
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
   static final String DATABASE_URL = "jdbc:mysql://localhost/employees";
   static final String USERNAME = "root";
   static final String PASSWORD = "admin";

   Scanner input;

   String frase = JOptionPane.showInputDialog(null, "Digite a consulta");
  
   private ResultSetTableModel1 tableModel1;
   private JTextArea queryArea;

   //cria o ResultSetTableModel1 tableModel1
   public AumentaSalario()
   {
       super("Tela do resultado de consultas");

       //cria o ResultSetTableModel e exibe tabela de banco de dados
       try
       {
           input = new Scanner(frase);

           tableModel1 = new ResultSetTableModel1(JDBC_DRIVER, DATABASE_URL, USERNAME, PASSWORD, frase);

           //configura JTextArea em que o usuário digita consultas
           queryArea = new JTextArea(frase, 3, 100);
           queryArea.setWrapStyleWord(true);
           queryArea.setLineWrap(true);

           JScrollPane scrollPane = new JScrollPane(queryArea, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
                   ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

           //cria o JButton para enviar consulta
           JButton submitButton = new JButton("Consulta");

           //cria o Box para gerenciar o posicionamento da queryArea e do submitButton na GUI
           Box box = Box.createHorizontalBox();
           box.add(scrollPane);
           box.add(submitButton);

           //cria o delegado JTable para tableModel
           JTable resultTable = new JTable(tableModel1);

           //posiciona os componentes GUI no painel de conteúdo
           add(box, BorderLayout.NORTH);
           add(new JScrollPane(resultTable), BorderLayout.CENTER);

           //cria evento ouvinte para submitButton
           submitButton.addActionListener(
                   new ActionListener()
                   {
                       @Override//passa a consulta para modelo de tabela
                       public void actionPerformed(ActionEvent event)
                       {
                           try
                           {
                               tableModel1.setQuery(queryArea.getText());
                           }
                           catch(SQLException sqlException)
                           {
                               JOptionPane.showMessageDialog(null, sqlException.getMessage(), "Database error", JOptionPane.ERROR_MESSAGE);

                               //tenta recuperar a partir da consulta de usuário inválida executando consulta-padrão
                               try
                               {
                                   tableModel1.setQuery(frase);
                                   queryArea.setText(frase);
                               }
                               catch(SQLException sqlException2)
                               {
                                   JOptionPane.showMessageDialog(null, sqlException2.getMessage(), "Erro no banco de dados", JOptionPane.ERROR_MESSAGE);

                                   //assegura que a conexão de banco de dados está fechada
                                   tableModel1.disconnectFromDatabase();

                                   System.exit(1);
                               }//fim do catch interno
                           }//fim do catch externo
                       }//fim do método actionPerformed
                   }//fim da classe ActionListener interna
                   );//fim da chamada para addActionListener

           setSize(500, 250);//configura o tamanho da janela
           setVisible(true);
       }//fim do try
       catch(ClassNotFoundException classNotFound)
       {
           JOptionPane.showMessageDialog(null, "Driver Mysql não encontrado", "Driver não encontrato", JOptionPane.ERROR_MESSAGE);

           System.exit(1);
       }//fim do catch
       catch(SQLException sqlException)
       {
           JOptionPane.showMessageDialog(null, sqlException.getMessage(), "Erro no banco de dados", JOptionPane.ERROR_MESSAGE);

           //assegura que a conexão de banco de dados está fechada
           tableModel1.disconnectFromDatabase();

           System.exit(1);
       }//fim do catch

       //dispõe da janela quando o usuário fecha o aplicativo(isso sobrescreve o padrão de HIDE_ON_CLOSE
       setDefaultCloseOperation(DISPOSE_ON_CLOSE);

       //assegura que a conexão de banco de dados é fechada quando usuário fecha o aplicativo
       addWindowListener(
               new WindowAdapter()
               {
                   //desconecta-se do banco de dados e sai quando a janela for fechada
                   public void windowClosed(WindowEvent event)
                   {
                       tableModel1.disconnectFromDatabase();
                       System.exit(0);
                   }//fim do método windowClosed
               }//fim da classe WindowAdapter interna
               );//fim da chamada a addWindowListener
   }//fim do construtor AumentaSalario

   //executa o aplicativo
   public static void main(String args[])
   {
       new AumentaSalario();
   }
}

Posta o erro

A instrução dada foi: UPDATE basePlusCommissionEmployees SET baseSalary = (baseSalary * 1.1) WHERE socialSecurityNumber = ‘333-33-3333’;

O erro apresentado:
Exception in thread “main” java.lang.NullPointerException
at com.deitel.jhtp6.empregados.ResultSetTableModel1.setQuery(ResultSetTableModel1.java:150)
at com.deitel.jhtp6.empregados.ResultSetTableModel1.(ResultSetTableModel1.java:40)
at com.deitel.jhtp6.empregados.AumentaSalario.(AumentaSalario.java:50)
at com.deitel.jhtp6.empregados.AumentaSalario.main(AumentaSalario.java:149)

Ja debugou? aparentemente o problema estaria na linha 40 do resultsettablemodel1 metaData = resultSet.getMetaData();
Mas como vc disse q foi feito o update, ficou estranho.

Tentei mas até o momento não consegui identificar.

Aposto que resultSet é null ali