Erro SQLException

7 respostas
J
Então galera estou desenvolvendo um jogo da Torre de Hanói, onde vou colocar um rank, porém ainda não tive integração de Java com banco de dados no meu curso ainda, então meu professor me passou o material para estudo e eu consegui fazer o seguinte código para incluir dados no banco :
import java.awt.BorderLayout;

public class Logar extends JFrame {

	private JPanel contentPane;
	private JTextField nome;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Logar frame = new Logar();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Logar() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		nome = new JTextField();
		nome.setBounds(137, 121, 195, 20);
		contentPane.add(nome);
		nome.setColumns(10);
		
		JButton btnJogar = new JButton("Jogar");
		btnJogar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try {
					//procura uma classe no projeto
					Class.forName("com.mysql.jdbc.Driver");
					
					//criar uma variavel de conexão
					Connection con;
					con=DriverManager.getConnection("jdbc:mysql://127.0.0.1/Teste","root","root");
					
					String query = "INSERT INTO usuario (nome) Values(?)";
		      //cria o comando 		 	
			  PreparedStatement stmt = con.prepareStatement(query);
			  
			  //seta os valores
			  stmt.setString(1,nome.getText());
			 
			  stmt.executeUpdate();
			  stmt.close();
			  con.close();
					
					
				} catch (ClassNotFoundException ex) {
					// TODO Auto-generated catch block
					JOptionPane.showMessageDialog(null,"A classe não foi encontrada");
				}catch (SQLException e){
					JOptionPane.showMessageDialog(null,"Ocorreu um erro de SQL");
				}
				
				
				
			}
		});
		btnJogar.setBounds(184, 174, 89, 23);
		contentPane.add(btnJogar);
	}
}
O problema é que ele da SQLException nessa linha
con=DriverManager.getConnection("jdbc:mysql://127.0.0.1/Teste","root","root");
sem o tratamento de erro e quando coloco o tratamento de erro e comento a linha
stmt.executeUpdate();
não da erro por parte daquele catch que eu fiz para SQLException. Hoje irei perguntar para o professor como resolver, mas gostaria de contar com a ajuda de vcs tbem !

Ps: A senha do MySQL eu coloquei como root mesmo ! Também acho valido lembrar que estou usando Xampp como servidor.

7 Respostas

Fellipex

coloca um e.printStackTrace, e posta aqui melhor o log da exceção que ocorreu, só a string que você colocou fica dificil saber o porquê !
E também coloca um catch para Exception depois dos outros catchs , caso a exceção que está sendo lançada nao for nenhuma das duas anteriores
Att

Spammer

Quando instalas o xampp ele faz um check em todos campos devidamente instalados… tens a certeza que aconteceu isso? Nao uso o XAMPP ha muito tempo mas la se nao me engano tem alguma interface que mostra se tudo esta devidamente conectado (conexao a bd, tabelas etc)

J
<blockquote><div class="quote-author">Fellipex:</div>coloca um e.printStackTrace, e posta aqui melhor o log da exceção que ocorreu,  a string que você colocou fica dificil saber o porquê !

E também coloca um catch para Exception depois dos outros catchs , caso a exceção que está sendo lançada nao for nenhuma das duas anteriores

Att</blockquote> Cara o erro é esse:<blockquote> java.sql.SQLException: Incorrect integer value: ‘Robson’ for column ‘nome’ at row 1

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2019)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1937)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1922)

at Logar$2.actionPerformed(Logar.java:73)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

at java.awt.EventQueue.access$200(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.awt.EventQueue$3.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue$4.run(Unknown Source)

at java.awt.EventQueue$4.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)</blockquote>
Aleksandro

Por um acaso sua tabela no banco tem qtas colunas ? pelo que parece deve ter uma coluna auto-complete e você tá inserindo na primeiro coluna que é integer e o nome é string …deve ser isto …

Fabiano_Abreu

Olá java.teen,

O erro ocorre pois, você esta tentando inserir o valor Robson, ou seja, string em um campo integer, isto esta descrito na mensagem de erro.

java.sql.SQLException: Incorrect integer value: 'Robson' for column 'nome' at row 1

Abraços.

_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

J

Obrigado, nem percebi que tinha colocado o campo como int ;S talvez seja por causa do sono ontem as 03:00 am rs muito obrigado deu tudo certo aqui galera valeu !

Aleksandro

Favor encerrar a questão colocando como [Resolvido] no assunto…abs

Criado 18 de outubro de 2012
Ultima resposta 18 de out. de 2012
Respostas 7
Participantes 5