Galera estou com um problema que nao consigo inserir dados no banco a partir da servlet pois da a mensagem de erro abaixo.
java.lang.NullPointerException
com.curso.AlunoServlet.doPost(AlunoServlet.java:43)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
//Classe Aluno Servlet
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Criar criar = new Criar();
Conexao con = new Conexao();
Usuario usuario = new Usuario();
String nome_post = request.getParameter(“nome”);
String usuario_post = request.getParameter(“usuario”);
String senha_post = request.getParameter(“senha”);
usuario.setNome(nome_post);
usuario.setUsuario(usuario_post);
usuario.setSenha(senha_post);
criar.creat(usuario);
//Classe criar
public class Criar extends Conexao {
public void creat(Usuario usuario) throws SQLException{
String sql = "INSERT INTO usuario VALUES nome=?, usuario=?, senha=? ";
PreparedStatement ps = null;
try {
ps = getConexao().prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
ps.setString(1, usuario.getNome());
ps.setString(2, usuario.getUsuario());
ps.setString(3, usuario.getSenha());
ps.execute();
}
}
Alguém poderia dar uma luz???
Vamos lá
INSERT INTO usuario VALUES nome=?, usuario=?, senha=? esta errado concorda ??
INSERT INTO usuario (nome, usuario, senha) VALUES (?,?,?) esta certo agora !!!
Agora me diga por que vc instânciou uma classe Conexao con no seu Servlet se depois vc nunca usa ela ???
o con estanciado la era porque eu estava tentando inserir no banco sem chamar metodo entende pra testar o problema ai esqueci de deletar mas assim fiz a alteração indicada e o erro continua mas vlw pela força.
normalmente eu faria desta forma:
public void creat(Usuario usuario) throws Exception{
PreparedStatement ps = null;
String sql = "INSERT INTO usuario (nome, usuario, senha) VALUES (?,?,?)";
try{
//ps = Conexao.getConexao().prepareStatement(sql);
ps = getConexao().prepareStatement(sql);
ps.setString(1, usuario.getNome());
ps.setString(2, usuario.getUsuario());
ps.setString(3, usuario.getSenha());
ps.executeUpdate();
}catch(SQLException e){
throw new Exception("Erro ao tentar inserir novo login");
}finally{
ps.close();
}
}
não sei se vai te ajudar
Posta o método getConexao()…
ai vai toda a classe
só que eu não uso herança (extends)
public class Conexao {
private final static String DRIVER = "com.mysql.jdbc.Driver";
private final static String URL = "jdbc:mysql://localhost:3306/nome do banco";
private final static String USER = "usuario";
private final static String PASS = "senha";
private static Connection conexao;
//Carregando o driver
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
throw new ClassCastException("Não foi possível caregar o driver de conexão.");
}
}
//Conectando ao banco
public static Connection getConexao() throws SQLException{
if (conexao == null) {
try {
conexao = DriverManager.getConnection(URL, USER, PASS);
} catch (SQLException e) {
throw new SQLException("Erro ao tentar conectar o banco");
}
}
return conexao;
}
}