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.