Estou com um pequeno problema no meu código…
É o seguinte tenho uma tela de cadastro de usuários onde é enviado para o meu servelet que resgata todos os dados blz
depois chama meu o meu Dao onde está minha conexão e onde é feita a conexão com o meu banco de dados e é
enserido o meu cliente no banco mas ao invez de inserir ele está caindo direto no Catch e da erro e mostra a mensagem (Não é possivel cadastrar)
Alguem pode me ajudar???
falo ate
cadastracliente.jsp
CadastraCliente.java
package Motel.actions;
import java.io.*;
import java.net.*;
import java.sql.SQLException;
import javax.servlet.*;
import javax.servlet.http.*;
import Motel.bean.ClienteBean;
import Motel.jdbc.dao.ClienteDao;
public class CadastraCliente extends HttpServlet {
//Criando cliente
ClienteBean cliente = new ClienteBean();
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<body>");
String nome = request.getParameter("nome");
String endereco = request.getParameter("end");
String rg = request.getParameter("rg");
String telefone = request.getParameter("tel");
// Populando o ClienteBean
cliente.setNome(nome);
cliente.setEndereco(endereco);
cliente.setTelefone(telefone);
cliente.setCod_Rg(rg);
// Chamando ClienteDao que contem conexao com o banco de dados
ClienteDao dao = new ClienteDao();
//Adicionando cliente no metodo adciona
dao.adiciona(cliente);
out.println("Cliente Cadastrado com Sucesso ");
} catch (SQLException ex) {
out.println("Problemas ao inserir Cliente");
ex.printStackTrace();
out.close();
} finally{
}
out.println("</body>");
out.println("</html>");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "Short description";
}
}
ClienteDao.java
package Motel.jdbc.dao;
import Motel.bean.ClienteBean;
import Motel.conexao.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class ClienteDao {
private Connection connection;
public ClienteDao(Connection con) {
this.connection = con;
}
public ClienteDao() throws SQLException {
this.connection = ConnectionFactory.getConnection();
}
public void adiciona(ClienteBean cliente) throws SQLException {
// prepared statement para inser��o
PreparedStatement stmt = this.connection.prepareStatement(
"insert into cadcliente (nome, endereco,telefone,rg) values (?, ?, ?, ?)");
// seta os valores
stmt.setString(1, cliente.getNome());
stmt.setString(2, cliente.getEndereco());
stmt.setString(3, cliente.getTelefone());
stmt.setString(4, cliente.getCod_Rg());
// executa
stmt.executeUpdate();
stmt.close();
}
}
Conexão com o banco
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Motel.conexao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
private static final String url = "jdbc:jtds:sqlserver://localhost:1433/MOTEL";
private static final String driver = "net.sourceforge.jtds.jdbc.Driver";
private static final String usuario = "sa";
private static final String senha = "willian123";
public static Connection getConnection() throws SQLException {
try {
Class.forName(driver);
return DriverManager.getConnection(url, usuario, senha);
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new SQLException(e.getMessage());
}
}
public static void main(String[] args) {
try {
ConnectionFactory.getConnection();
System.out.println("Conectou ao banco");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Obrigado Marcos
mas deu erro no dao.adiciona(cliente);
PQ?
public ClienteDao(Connection con) {
this.connection = con;
ConnectionFactory cf = new ConnectionFactory();
ClienteDao dao = new ClienteDao(cf.getConnection());
dao.adiciona(cliente);
}
Me ajudem pessoal pq tenho que ser rápido para entregar isso amanhã e não sei o que ocorre
mudei o código agora, acho que assim fica mais facil… mas continua dando o mesmo erro ele cai no catch
e não da erro nenhum somente imprime “Erro ao adicionar cliente”
package Motel.jdbc.dao;
import Motel.bean.ClienteBean;
import Motel.conexao.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ClienteDao {
private ClienteBean cliente;
public void adiciona(ClienteBean cliente) throws SQLException {
Connection con;
PreparedStatement stm=null;
try{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
con=DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/MOTEL",
"sa", "willian123");
System.out.println("Conectado");
stm=con.prepareStatement( "insert into TBCLIENTE (rg,nome,telefone,endereco) values " +
"(?, ?, ?, ?)");
// seta os valores
stm.setString(1, cliente.getCod_Rg());
stm.setString(2, cliente.getNome());
stm.setString(3, cliente.getTelefone());
stm.setString(4, cliente.getEndereco());
// executa
stm.executeUpdate();
stm.close();
}catch(ClassNotFoundException ex){
System.out.println("Driver não encontrado");
}catch(SQLException ex){
System.out.println("Não foi possível se conectar com o banco de dados");
}
}
}
Imprima o stack trace do exception pra gente dar uma olhada. Lá, onde vc colocou os catches escreva uma linha igual a esta aqui: System.out.println(ex.printStackTrace());
lembrando que é bom vc botar um brakpoint dentro da funcao adiciona e ver se os valores ali rg, cpf, nome,… realmente nao tao vindo nulos, que eles tao com algum valor e tb que sua tabela la ta criada corretamente, com o mesmo nome que vc ta botando ali no insert e tal
public static void main(String[] args ) {
ClienteBean clienteBean = new ClienteBean();
clientBean.setNome("BERNADETE");
clientBean.setCod_Rg("123456789");
clientBean.setTelefone("999-9999");
clientBean.setEndereco("Rua da Alegria, 69");
ClienteDao clienteDao = new ClienteDao();
try {
clienteDao.adiciona( clienteBean );
} catch( SQLException e ) {
System.out.println(e.printStackTrace());
}
}
}
[/code]
A pilha de erros deve aparecer na aba Console.
P.S Se estiver utilizando o Eclipse execute como aplicação: Clicar com o botão direito do mouse em cima da classe e entrar nas opções Run As / Java Application.
eh esqueci de cita isso
isso que o fantomas falo é mto util
assim vc sabera se esta funcionando sua conexao
se vc fizer isso que ele falo e inserir que dizer que a conexao ta indo certa
ai se der algum erro depois qdo for rodar mesmo entao significa que o erro ta qdo vc ta pegando as informacoes atraves do servlet
O NetBeans não deixa que eu use esse metodo PQ? Tenho que adicionar ele nas bibliotecas ou nem?
E mais uma pergunta na minha tabela os campos estão todos em maiusculos
então no meu insert fica assim?
“insert into TBCLIENTE (COD_RG,NOME,TELEFONE,ENDEREO) values (?, ?, ?, ?)”);