Insert no banco de dados sql server

8 respostas
L

Ola galera,
estou seguindo um exemplo de um blog , e estou tentando fazer um insert com java, Ajax e SQLServer, mais não esta funcionando.

deem uma olhada conexao
package classes;
import java.sql.*;
/**
 *
 * @author Lucas
 */
public class ConexaoBanco {
	
     public static Connection AbreConexao() throws SQLException, Exception{
 
        //Dados para conexão com banco de dados SQL
    	 String banco = "nomeBanco";
         String usuario = "user";
         String senha = "senha";
        String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        Connection conn = null;

        //Método estático para inicializar o driver JDBC (Arquivo inserido em Bibliotecas)
        Class.forName(driver);

        //Envia ao DriverManagr os dados para conectar ao banco de dados
        conn = DriverManager.getConnection("jdbc:sqlserver://nomeBanco:1433;databaseName=Lucas",
					"user", "senha");

        //retorna a conexão para quem chamou o método
        return conn;
    }

    //Classe criada para executar todos os SELECT's no banco de dados
    public static ResultSet executeQuery(Connection conn, String query) throws SQLException {
        //Prepara uma variavel do tipo Statement que representa uma Query ou Comando
        Statement sta = conn.createStatement();

        //Cria variável do tipo ResultSet que irá receber a consulta do Statement
        ResultSet rs = null;
        try {
            //Variável ResultSet recebe os dados retornado do banco
            rs = sta.executeQuery(query);

        } catch (Exception err) {
            //Log.logar(err.getMessage(), Log.TYPE_INFORMATION);
        }
        return rs;
    }

    //Classe criada para executar todos os INSERT's no banco de dados
    public static int executeInsert(Connection conn, String query) throws SQLException {

        //Prepara uma variavel do tipo Statement que representa uma Query ou Comando
        Statement stm = conn.createStatement();

        //Executa o comando SQL INSERT no banco de dados
        return stm.executeUpdate(query);
    }

}
Servlet de cadastro
package servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import classes.ConexaoBanco;



/**
 * Servlet implementation class sCadastraAluno
 */
public class sCadastraAluno extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    
	
	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			response.setContentType("text/html;charset=UTF-8");
			PrintWriter out = response.getWriter();
	
			try {
	            //Todos os parametros que será recebido pela pagina JSP
	            String matricula = request.getParameter("matricula");
	            String nome = request.getParameter("nome");
	            String idade = request.getParameter("idade");
	            String email = request.getParameter("email");
	            String endereco = request.getParameter("endereco");

	            //String com o comando de Insert
	            
	            
	            String query = ("insert into Aluno (matricula, nome,idade,email,endereco) values('','"+matricula+"','"+nome+"','"+idade+"','"+email+"','"+endereco+"')"); 
	            
	            
	            //Abre a conexão com o banco de dados utilizando a classe criada
	            Connection conn = ConexaoBanco.AbreConexao();

	            //Envia para classe INSERT a conexao aberta e o comando que será executado
	            ConexaoBanco.executeInsert(conn, query);

	            //Sempre fechar a conexão aberta para não causar problemas futuros
	            conn.close();

	        }catch(Exception ex){
	            out.println(ex.getMessage());
	        } finally {
	            out.close();
	        }
	}
	
	public sCadastraAluno() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}


	
	
}
cadastro.jsp
<body>
	<div>
		<h2>
		Pesquisar Usuario
		<br>			
			 <a href="pesquisar.jsp">Pesquisar Usuários Cadastrados</a>
			 
		</h2>
		<div align="center"><br></div> <span>Cadastro de Usu&aacute;rio</span><br> 
		<table align="center">
			<tr align="center">
				<td>Matricula</td>
				<td align="left"><input type="text" id="txt_matricula" style="width: 80px;" /></td>
			</tr>
			<tr align="center">
				<td>Nome</td>
				<td><input type="text" id="txt_nome" /></td>
			</tr>
			<tr align="center">
				<td>Idade</td>
				<td><input type="text" id="txt_idade" /></td>
			</tr>
			
			<tr align="center">
				<td>Email</td>
				<td><input type="text" id="txt_email" /></td>
			</tr>
			
			<tr align="center">
				<td>Endereço</td>
				<td><input type="text" id="txt_endereco" /></td>
			</tr>
			
			<tr align="center">
				<td colspan="2">&nbsp;</td>
			</tr>
			<tr>
			
				<td colspan="2" align="center">
					<button id="btn_salvar"  onClick="cadastraUsuario();">Salvar</button>
				</td>
			</tr>
		</table>		
	</div>
	
	<div id="resp"></div>
	<script type="text/javascript">
		//Função para enviar requisições HTTP
		function initXHR() {
			// criando xhr de acordo com o browser
			if (window.XMLHttpRequest) { // Nao microsoft
				xhr = new XMLHttpRequest();
			} else if (window.ActiveXObject) {
				xhr = new ActiveXObject("Microsoft.XMLHttp");
			}
		}
		//Este codigo e o initXHR sempre serão os mesmo. Não  necessidade de criar outro
		function sendRequest(url, handler) {
			initXHR();
			// setando método de resposta no xhr
			xhr.onreadystatechange = handler;
			// abrindo requisição
			xhr.open("GET", url, true);
			// executando xhr
			xhr.send(null);
		}
		//Função será executada ao Clicar no botão Salvar. A função pega os valores digitados e envia para Servlet
		function cadastraUsuario() {
			var matricula = window.document.getElementById("txt_matricula");
			var nome = window.document.getElementById("txt_nome");
			var idade = window.document.getElementById("txt_idade");
			var email = window.document.getElementById("txt_email");
			var endereco = window.document.getElementById("txt_endereco");
			//Variável que passará os valores via Ajax para o servlet
			var url = "sCadastraAluno?matricula=" + matricula.value + "&nome="
					+ nome.value + "&idade=" + idade.value + "&email="
					+ email.value + "&endereco=" + endereco.value;
			//Envia a varivável e chama proxima função para verificar a resposta do Servlet
			sendRequest(url, ajaxCadastro);
		}
		//Retorno do Servlet indicando se está tudo Ok.
		function ajaxCadastro() {
			if (xhr.readyState == 4) { // requisicao concluida
			// status da resposta 200 = OK, (404 página não encontrada, 500 erro no servidor)
				if (xhr.status == 200) {
					// setando valores de resposta do servlet no meu div
					var resposta = window.document.getElementById("resp");
					//Definindo um texto que será exibido se cadastro foi feito com sucesso.
					resposta.innerHTML = "Usuário cadastrado com sucesso!";
				}
			
			}
		
		}
	</script>
</body>

VLW

8 Respostas

S

Eu acho que você falando especificamente o erro que ocorre quando você tenta inserir os dados no banco ficaria mais fácil, não acha? :wink:

Quer uma dica? Baixe a apostila FJ21 da Caelum, tenho quase certeza que você poderá aproveitar muito melhor o seu conteúdo. Além de adotar algumas práticas melhores com relação a persistência, como por exemplo usar PreparedStatement ao invés do Statement.

Confira. É gratuita a apostila, e bem didática.

J

e outra, quando for postar uma dúvida, explique o erro… “não está funcionando” é muito vago, pelo menos eu, não tenho bola de cristal, ainda… ;(

L

cara, quando vou cadastrar , aparece td certinho, da a mensagem de aluno cadastrado, só que quando vou no BD, o aluno nao esta la :frowning:

S

Chutando alto, alto, alto:

Troca essa parte:

String query = ("insert into Aluno (matricula, nome,idade,email,endereco) values('','"+matricula+"','"+nome+"','"+idade+"','"+email+"','"+endereco+"')");

Assim:

String query = "insert into Aluno (matricula, nome,idade,email,endereco) values('','"+matricula+"','"+nome+"','"+idade+"','"+email+"','"+endereco+"')";

S

pode ser também esse espaço entre matricula e nome:

String query = ("insert into Aluno (matricula, nome,idade,email,endereco)

L

não foi não, ele continua dando a mensagem de aluno cadastrado mais não adiciona no BD

S

hum,

Que tal postar o código da tabela??

Se não der certo, vamos aplicar o PreparedStatement.

S

nossa amigo

E esse espaço em branco com vírgula, que você colocou aspas antes do ‘"+matricula’"?

String query = “insert into Aluno (matricula, nome,idade,email,endereco) valuesb”;

Você aparentemente está querendo inserir dados em 6 campos ao invés de 5.
Por isso aconselho usar o PreparedStatement, amigo. Remove esse espaço em branco aí antes da matricula. Se não der certo, poste a tabela para analisarmos.

Criado 15 de maio de 2012
Ultima resposta 15 de mai. de 2012
Respostas 8
Participantes 3