Erro no insert!

3 respostas
C

ae galera.. to qrendo coloca um insert e olha o q ta acontecendo:

codigo (partes q tem a ver):

a criação do botao e seu evento:

bInserir = new JButton("Inserir");
	bInserir.setFocusable(false);
	pInserir.add(bInserir);
	bInserir.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e)
	{
		
		String login = tLogin.getText();
		String senha = tSenha.getText();
		
		if(tLogin.getText().equals("")  || tSenha.getText().equals(""))
			JOptionPane.showMessageDialog(null,"Todos os campos são obrigatórios!");
			
		else{			
		String query = "INSERT INTO login (Login,Senha) VALUES ("+login+","+senha+")";		
		inserir(query);
		tBusca.setText(""); 			
		}
		
	}
	}); 


e a ação de inserir que é chamada pelo botão:

public void inserir(String query){
		
			log.setText("");
			log.append("Conteúdo da Tabela"+newline);
		
		Connection conexao = null; //gerencia a conexão
		Statement statement = null; //instrução de consulta
		
		//conecta-se ao banco de dados banco e o consulta
		try{
			
			Class.forName(JDBC_DRIVER); //carrega a classe driver do banco de dados
			
			//Estabelece conexão com o banco de dados
			conexao = DriverManager.getConnection(DATABASE_URL, "root", "");
			
			//Cria statement para consultar banco de dados
			statement = conexao.createStatement();
			
			//Consulta banco de dados
			PreparedStatement cadastro = conexao.prepareStatement(query);
			
			//executando a QUERY
            cadastro.executeUpdate();  
			
		}//fim do try		
		catch (SQLException e)		
        {
         	e.printStackTrace(); 
        }//fim do catch 
        
        catch (ClassNotFoundException classNotFound){
			classNotFound.printStackTrace();
			System.exit(1);
		}//fim do catch
				
	}

o erro q dá é de Syntax error ou acess violation

algm sabe pq?

3 Respostas

fabim

posta o stacktrace ae pra gente da uma olhada…

ramilani12

Vc esta comendo bolas ai , vc esta usando Statement e PreparedStatement
Sugiro utilizar PreparedStatement pelo seguintes motivos:

:arrow: é mais rapido que Statement , é pré - compilado a Query
:arrow: evite SQLInjection

public int inserir(String usuario , String senha){
 		  int i = 0;
 			log.setText("");
 			log.append("Conteúdo da Tabela"+newline);
 		
 		Connection conexao = null; //gerencia a conexão
 		Statement statement = null; //instrução de consulta
 		
 		//conecta-se ao banco de dados banco e o consulta
 		try{
 			
 			Class.forName(JDBC_DRIVER); //carrega a classe driver do banco de dados
 			
 			//Estabelece conexão com o banco de dados
 			conexao = DriverManager.getConnection(DATABASE_URL, "root", "");
 			
 		  // Monta Sql
 		  StringBuffer sql = new StringBuffer();
 		  sq.append(" INSERT INTO login (Login,Senha) VALUES ( ?, ?)  ");
 		  
 			//Prepara o SQL para banco de dados
 			PreparedStatement cadastro = conexao.prepareStatement(sql.toString());
 			
 			cadastro.setString(1 , usuario);
 			cadastro.setString(2 , senha);
 			
 			//executando a QUERY
      i = cadastro.executeUpdate();  
 			
 		}//fim do try		
 		catch (SQLException e)		
         {
          	i = -1;
          	e.printStackTrace(); 
         }//fim do catch 
         
         catch (ClassNotFoundException classNotFound){
 			classNotFound.printStackTrace();
 			System.exit(1);
 		}//fim do catch
 	return i;			
 	}
if (inserir (usuario , senha) &gt 0 )
   JOptionPane.showMessageDialog(null," Usuario e Senha cadastrados com sucesso");
else
 JOptionPane.showMessageDialog(null,"Problemas com cadastro");

Veja a minha implementação e compara com sua e veja as diferenças sugiro que vc dê uma lida na classe PreparedStatement para melhor entendimento

http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html

java

cadu0220
Eu passei por esse problema e resolvi colocando aspas simples nos values.
Ex: Insert into login(Login,Senha) values (’ “+login” ‘,’ “+senha+” ’ );

Espero ter Ajudado!!!

Criado 3 de maio de 2007
Ultima resposta 4 de mai. de 2007
Respostas 3
Participantes 4