Problema na alteração de dados do um TableModel - Não consigo resolver

Boa tarde galera,
Seguinte estou com um problema na hora de atualizar dados no meu TableModel, seguinte:

  • Eu selecione o a linha que desejo alterar e clicar no botao “Alterar” sendo assim ele abre uma mensagem e pede para digitar a nova informação, sendo assim executa normal e efetuar a alteração normal tambem, mas o meu problema é se possuir dois clientes com o mesmo telefone, ai quando você alterar um telefone automaticamente ele altera o telefone do outro cliente tambem sem eu ter pedido.

Esse é o problema, alguem pode me ajudar ?

O codigo é bem grande porem olhem da linha 261 ate 398 ( onde esta meu codigo do botao Alterar), segue meu codigo:

[code]// Exibe o conteúdo da tabela Authors no
// banco de dados Books.
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.beans.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.EventObject;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.JTable;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.Box;

public class Resultado_Consulta_Cliente extends JFrame
{
private static final long serialVersionUID = 1L;
// driver JDBC e URL de banco de dados
static final String JDBC_DRIVER = “org.postgresql.Driver”;
static final String DATABASE_URL = “jdbc:postgresql://localhost:5432/postgres”;
static final String USERNAME= “postgres”;
static final String PASSWORD= “password”;
//consulta padrão seleciona todas as linhas de tabela authors
static final String DEFAULT_QUERY = “SELECT * FROM cliente”;

private CResultSetTableModel tableModel;
private JTextArea queryArea;
private JLabel lbTelefone, lbIdCliente;
private JPanel panelSair, panelBox, panelSouth, panelExcluir, panelAlterar;
private JTextField txtIdCliente;
JTable resultTable;

// cria o ResultSetTableModel e GUI
public Resultado_Consulta_Cliente()
{
	super( "Consulta" );

	// cria o ResultSetTableModel e exibe tabela de banco de dados
	try
	{
		// cria o TableModel para resultados da consulta SELECT * FROM authors
		tableModel = new CResultSetTableModel( JDBC_DRIVER, DATABASE_URL,
				USERNAME, PASSWORD, DEFAULT_QUERY );
		
		//Configura Label
		lbTelefone = new JLabel ("Telefone:");
		lbIdCliente = new JLabel ("Digite o ID_Cliente para excluir:");
		
		//Configura TextField
		txtIdCliente = new JTextField(10);
		
		// configura JTextArea em que o usuário digita consultas
		queryArea = new JTextArea( "", 1,10);
		queryArea.setWrapStyleWord( true );
		queryArea.setLineWrap( true );

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

		// configura o JButton para enviar consulta
		ImageIcon imgProcurar= new ImageIcon("imagens/imgProcurar.png"); 
		JButton submitButton = new JButton( imgProcurar );
		submitButton.setToolTipText("Procurar");
		
		//configura o JButton para limpar o TextArea
		ImageIcon imgLimpar = new ImageIcon("imagens/imgLimpar.png"); 
		JButton btLimpar = new JButton( imgLimpar );
		btLimpar.setToolTipText("Limpar");
		
		//configura outros botoes
		ImageIcon imgSair = new ImageIcon("imagens/imgSair.png"); 
		JButton btSair = new JButton( imgSair );
		btSair.setToolTipText("Sair");
		
		//configura outros botoes
		ImageIcon imgExcluir = new ImageIcon("imagens/imgExcluir.png"); 
		JButton btExcluir = new JButton( imgExcluir );
		btExcluir.setToolTipText("Excluir");
		
		//configura outros botoes
		ImageIcon imgAlterar = new ImageIcon("imagens/imgAlterar.png"); 
		JButton btAlterar = new JButton( imgAlterar );
		btAlterar.setToolTipText("Alterar");
		
		//Configurando panel Exlcuir
		panelExcluir = new JPanel ();
		panelExcluir.setLayout( new FlowLayout(FlowLayout.LEFT));
		panelExcluir.setPreferredSize(new Dimension(490,62));
		panelExcluir.setOpaque(false);
		panelExcluir.setBorder(BorderFactory.createTitledBorder("Excluir Usuário"));

		panelExcluir.add(lbIdCliente);
		panelExcluir.add(txtIdCliente);
		panelExcluir.add(btExcluir);
		
		//Configurando panel Alterar
		panelAlterar = new JPanel ();
		panelAlterar.setLayout( new FlowLayout(FlowLayout.RIGHT));
		panelAlterar.setPreferredSize(new Dimension(490,62));
		panelAlterar.setOpaque(false);
		panelAlterar.setBorder(BorderFactory.createTitledBorder("Alterar"));
		
		panelAlterar.add(btAlterar);
		
		//Configurando panelSair
		panelSair = new JPanel ();
		panelSair.setLayout( new FlowLayout(FlowLayout.CENTER));
	
		panelSair.add(btSair);
		
		
		//Configurando panelSouth
		panelSouth = new JPanel();
		panelSouth.setLayout( new BorderLayout() );
		panelSouth.add( panelExcluir, BorderLayout.NORTH );
		panelSouth.add( panelAlterar, BorderLayout.CENTER );
		panelSouth.add( panelSair, BorderLayout.SOUTH );

		//cria o Box para gerenciar o posicionamento da queryArea e do
		// submitButton na GUI
		panelBox = new JPanel();
		panelBox.setLayout( new FlowLayout( FlowLayout.LEFT ) );
		//Box box = Box.createHorizontalBox();
		panelBox.add(lbTelefone);
		panelBox.add( scrollPane );
		panelBox.add( submitButton );
		panelBox.add(btLimpar);		

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

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

		// cria evento ouvinte para submitButton
		submitButton.addActionListener(

				new ActionListener()
				{
					// passa consulta para modelo de tabela
					public void actionPerformed( ActionEvent event )
					{
						// realiza uma nova consulta
						try
						{
							String query = "SELECT * FROM cliente WHERE Telefone = '" + queryArea.getText() + "';"; 
							tableModel.setQuery( query );
						} // fim do try
						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
							{
								tableModel.setQuery(DEFAULT_QUERY);
								queryArea.setText(" ");
							} // fim do try
							catch ( SQLException sqlException2 )
							{
								JOptionPane.showMessageDialog( null,
										sqlException2.getMessage(), "Database error",
										JOptionPane.ERROR_MESSAGE );

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

								System.exit( 1 ); // termina o aplicativo
							} // fim do catch interno
						} // fim do catch externo
					} // fim do actionPerformed
				} // fim da classe interna ActionListener
		); // fim da chamada para addActionListener
		
		//Cria evento Botao Limpar
		btLimpar.addActionListener(
				
				new ActionListener()
				{
					// passa consulta para modelo de tabela
					public void actionPerformed( ActionEvent event )
					{
						queryArea.setText("");
					}
				}	
				
				);
		
		//Cria evento Botao Sair
		btSair.addActionListener(
				
				new ActionListener()
				{
					// passa consulta para modelo de tabela
					public void actionPerformed( ActionEvent event )
					{
						tableModel.disconnectFromDatabase();
						System.exit( 0 );
					}
				}	
				
				);
		
		//Cria evento Botao Exluir
		btExcluir.addActionListener(
				
				new ActionListener()
				{
					// passa consulta para modelo de tabela
					public void actionPerformed( ActionEvent event )
					{
						// realiza uma nova consulta
						try
						{
							String Delete = "DELETE FROM cliente WHERE id_cliente = '" + txtIdCliente.getText() + "';"; 
							tableModel.setQuery( Delete );
						} // fim do try
						catch ( SQLException sqlException )
						{
							//tenta recuperar a partir da consulta de usuário inválida
							// executando consulta padrão
							try
							{
								tableModel.setQuery(DEFAULT_QUERY);
								txtIdCliente.setText(" ");
							} // fim do try
							catch ( SQLException sqlException2 )
							{
								
								// assegura que a conexão de banco de dados está fechada
								//tableModel.disconnectFromDatabase();

								System.exit( 1 ); // termina o aplicativo
							} // fim do catch interno
						}
					}
				}	
				
				);
		
		//Cria evento Botao Alterar
		btAlterar.addActionListener(
				
				new ActionListener()
				{
					// passa consulta para modelo de tabela
					public void actionPerformed( ActionEvent event )
					{
						try
						{
							//OBTEM O VALOR DA LINHA/COLUNA SELECIONADA NA TABELA E ARMAZENA O VALOR NA VARIAVEL
							String valorSelecionado = resultTable.getValueAt(resultTable.getSelectedRow(),resultTable.getSelectedColumn()).toString();  
							
							//JANELA PARA CONFIRMAR SE DESEJA MESMO ALTERAR O REGISTRO SELECIONADO
					        int status = JOptionPane.showConfirmDialog(null,"Deseja altererar o registro:  "+valorSelecionado+ "?","Atenção",JOptionPane.YES_NO_OPTION);
					        
							if (status == JOptionPane.YES_OPTION) 
					        { 
					        	//OBTEM O NUMERO DA POSIÇÃO DA COLUNA (NOME DO CAMPO DA TABELA)
					        	int campo = resultTable.getSelectedColumn();
					        	
					        	//OBTEM O VALOR DIGITADO NA JANELA PARA ALTERAR NO BANCO
					        	String valor = JOptionPane.showInputDialog(null,"Digite o valor que deseja alterar","Alterar",JOptionPane.QUESTION_MESSAGE);
					        	
					        	//CAMPO = 0 = IDcliente - NÃO PODE SER ALTERADO!
					        	if(campo == 0)
					        	{
					        		JOptionPane.showMessageDialog(null,"Campo ID não pode ser alterado!","ERRO",JOptionPane.ERROR_MESSAGE);
					        	}
					           	if(campo == 1)
					        	{
					           		String SQL = "UPDATE cliente SET nome = '"+valor+"' WHERE nome LIKE '"+valorSelecionado+"' ";
					           		tableModel.setQuery( SQL );
					        						        		
					        		try
					        		{					        			
					     	        	JOptionPane.showMessageDialog(null,"O registro foi alterado com sucesso!","INFORMAÇÃO",JOptionPane.INFORMATION_MESSAGE);
					     	        							                }
					                catch (Exception ex)
					                {   
					             	   ex.printStackTrace();   
					                }
					        	}
					           	if(campo == 2)
					        	{
					           		String SQL = "UPDATE cliente SET telefone = '"+valor+"' WHERE telefone LIKE '"+valorSelecionado+"' ";
					           		tableModel.setQuery( SQL );
					        						        		
					        		try
					        		{					        			
					     	        	JOptionPane.showMessageDialog(null,"O registro foi alterado com sucesso!","INFORMAÇÃO",JOptionPane.INFORMATION_MESSAGE);
					     	        							                }
					                catch (Exception ex)
					                {   
					             	   ex.printStackTrace();   
					                }
					        	}
					           	if(campo == 3)
					        	{
					           		String SQL = "UPDATE cliente SET rua = '"+valor+"' WHERE rua LIKE '"+valorSelecionado+"' ";
					           		tableModel.setQuery( SQL );
					        						        		
					        		try
					        		{					        			
					     	        	JOptionPane.showMessageDialog(null,"O registro foi alterado com sucesso!","INFORMAÇÃO",JOptionPane.INFORMATION_MESSAGE);
					     	        							                }
					                catch (Exception ex)
					                {   
					             	   ex.printStackTrace();   
					                }
					        	}
					           	if(campo == 4)
					        	{
					           		String SQL = "UPDATE cliente SET numero = '"+valor+"' WHERE numero LIKE '"+valorSelecionado+"' ";
					           		//tableModel.setQuery( SQL );
					        						        		
					        		try
					        		{	
					        			tableModel.setQuery( SQL );
					     	        	JOptionPane.showMessageDialog(null,"O registro foi alterado com sucesso!","INFORMAÇÃO",JOptionPane.INFORMATION_MESSAGE);
					     	        							                }
					                catch (Exception ex)
					                {   
					             	   ex.printStackTrace();   
					                }
					        	}
					           	if(campo == 5)
					        	{
					           		String SQL = "UPDATE cliente SET bairro = '"+valor+"' WHERE bairro LIKE '"+valorSelecionado+"' ";
					           		tableModel.setQuery( SQL );
					        						        		
					        		try
					        		{					        			
					     	        	JOptionPane.showMessageDialog(null,"O registro foi alterado com sucesso!","INFORMAÇÃO",JOptionPane.INFORMATION_MESSAGE);
					     	        							                }
					                catch (Exception ex)
					                {   
					             	   ex.printStackTrace();   
					                }
					        	}
					           	if(campo == 6)
					        	{
					           		String SQL = "UPDATE cliente SET complemento = '"+valor+"' WHERE complemento LIKE '"+valorSelecionado+"' ";
					           		tableModel.setQuery( SQL );
					        						        		
					        		try
					        		{					        			
					     	        	JOptionPane.showMessageDialog(null,"O registro foi alterado com sucesso!","INFORMAÇÃO",JOptionPane.INFORMATION_MESSAGE);
					     	        							                }
					                catch (Exception ex)
					                {   
					             	   ex.printStackTrace();   
					                }
					        	}
					        
					        } 
						}
						catch ( Exception ex )
						{
							//tenta recuperar a partir da consulta de usuário inválida
							// executando consulta padrão
							try
							{
								tableModel.setQuery(DEFAULT_QUERY);
							} // fim do try
							catch ( SQLException sqlException2 )
							{
								
								// assegura que a conexão de banco de dados está fechada
								//tableModel.disconnectFromDatabase();

								System.exit( 1 ); // termina o aplicativo
							} // fim do catch interno
						}
					}
				}	
				
				);

		setSize( 500, 400 ); // configura tamanho da janela
	    setLocationRelativeTo(null); //ABRE O PROGRAMA NO MEIO DA TELA
	    setResizable(false); //BLOQUEANDO REDIMENSIONAMENTO DA JANELA
		setVisible( true ); // exibe a janela
	} // fim do try
	catch ( ClassNotFoundException classNotFound )
	{
		JOptionPane.showMessageDialog( null,
				"Postgre driver not found", "Driver not found",
				JOptionPane.ERROR_MESSAGE );

		System.exit( 1 ); // termina o aplicativo
	} // fim do catch
	catch ( SQLException sqlException )
	{
		JOptionPane.showMessageDialog( null, sqlException.getMessage(),
				"Database error", JOptionPane.ERROR_MESSAGE );

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

		System.exit( 1 ); // termina o aplicativo
	} // 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 )
				{
					tableModel.disconnectFromDatabase();
					System.exit( 0 );
				} // fim do método windowClosed
			} // fim da classe WindowAdapter interna
	); // fim da chamada para addWindowListener
} // fim do construtor DisplayQueryResults

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

} // fim da classe DisplayQueryResults[/code]