Problemas com Insert e PreparedStatement (Resolvido)

3 respostas
gustavotorquato

Ola Caros Colegas do guj, estou aprendendo a usar o PreparedStatmente estou com um problema na hora de fazer a inserção no banco de dados. Na minha tabela usuario do banco de dados, tenho 8 campos, os dois campos finais sao nulos, estou tentando inserir nesta tabela sem inserir nos dois ultimos campos, porem com o PreparedStatment nao funciona, da erro falando que o numero de colunas do banco é diferente do numero de colunas que eu to tentando inserir. Olhem o codigo que eu to tentando fazer:

package persistencia.insert;

import persistencia.Conexao;
import java.sql.*;
import static javax.swing.JOptionPane.*;

public class InserePrimeiroUsuario 
{
	PreparedStatement pstm;
	public boolean InsereUsuario(String nome, String login, String senha)
	{
		boolean resultado = false;
		try
		{
		pstm = Conexao.getConexao().prepareStatement("INSERT INTO usuario VALUES (?,?,?,?,?,?)"); //Notem que so tem 6 interrogaçoes, no banco tem 8 campo, porem 2 sao nulos
		pstm.setInt(1,1); 
		pstm.setString(2,nome);
		pstm.setString(3,login);
		pstm.setString(4,senha);
		pstm.setString(5,"2011/07/19");
		pstm.setInt(6,1);
		pstm.executeUpdate();
		resultado = true;
		showMessageDialog(null,"Deu certo");
		}
		catch(Exception erro)
		{
			showMessageDialog(null,erro);
			resultado = false;
		}
		return resultado;
	}

Bom, com este codigo sempre da erro, Porem quando eu preencho os 8 campos da minha tabela, o negocio funciona direitinho. Vejam:

package persistencia.insert;

import persistencia.Conexao;
import java.sql.*;
import static javax.swing.JOptionPane.*;

public class InserePrimeiroUsuario 
{
	PreparedStatement pstm;
	public boolean InsereUsuario(String nome, String login, String senha)
	{
		boolean resultado = false;
		try
		{
		pstm = Conexao.getConexao().prepareStatement("INSERT INTO usuario VALUES (?,?,?,?,?,?,?,?)");//coloquei mais duas interrogaçoes somando 8 ao total
		pstm.setInt(1,1); 
		pstm.setString(2,nome);
		pstm.setString(3,login);
		pstm.setString(4,senha);
		pstm.setString(5,"2011/07/19");
		pstm.setInt(6,1);
		pstm.setInt(7,1);//este registro nao pode ser adicionado agora, mas o PreparedStatement da erro se eu nao colocar
		pstm.setInt(8,1);//este registro nao pode ser adicionado agora, mas o PreparedStatement da erro se eu nao colocar
		pstm.executeUpdate();
		resultado = true;
		showMessageDialog(null,"Tudo certo");
		}
		catch(Exception erro)
		{
			showMessageDialog(null,erro);
			resultado = false;
		}
		return resultado;
	}

}

}

Preciso de ajuda urgente pois estou fazendo o projeto de conclusao de curso. So mais uma coisa, eu uso sempre o Statment, caso o Prepared nao funcione, vou ter que voltar para ele. Se voces tiverem algum tutorial bem completo de PreparedStatement, por favor mandem o Link.
Muito Obrigado.

3 Respostas

leoramos

Se os dois são nulos, precisar inserir valores nulos no teu insert, seguindo a sintaxe SQL que estás utilizando.
Pra não ter que declará-los, precisar deixar explicítas as colunas pra inserção dos valores.

Belezura? Teu problema aí não é o PreparedStatement não =)

Abraço!

gustavotorquato

Cara, Muito, Muito Obrigado. Um descuido no SQL, kkkkkk
Muito Obrigado mesmo.

Bom, o PreparedStatement, estou começando a usar, entao a primeira coisa que me veio a cabeça foi ele.
mas foi falta de atençao minha, mas ate tem como justificar, depois de 1 noite em claro fazendo este sisteminha.
Valew.

leoramos

HAHA tranquilo, acontece.
Só lembra de editar o tópico com o “Resolvido” lá.
Abraço!

Criado 19 de julho de 2011
Ultima resposta 19 de jul. de 2011
Respostas 3
Participantes 2