Problemas para realizar ações no MySql

15 respostas
B

Olá, estou a uns 2 dias já, tentando realizar SELECT, UPDATE e DELETE pelo java, INSERT ta tudo bem, mas quando é qualquer outra ação, só me retorna o erro “Null”, já pesquisei vários exemplos, inclusive aqui do fórum, testei com vários parâmetros diferentes, refiz o código, fiz com códigos diferentes, sério, não tenho a menor ideia do que possa ser, se alguém puder me dar uma luz da causa, obrigado!

Segue a classe inteira:

package projetoStart;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.JOptionPane;

public class BancoDeDados {

	private Connection conn = null;
	private Statement stmt = null;
	private ResultSet rs = null;
	private PreparedStatement ps = null;
	
	
	public void conectar (){
		String servidor = "jdbc:mysql://localhost:3306/projeto_start?useSSL=false";
		String usuario = "root";
		String senha = "123456";
		String driver = "com.mysql.jdbc.Driver";
		
		try{
			Class.forName(driver);
			this.conn = DriverManager.getConnection(servidor, usuario, senha);
			this.stmt = this.conn.createStatement();
		}catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
	}
	
	public boolean estaConectado(){
		if(this.conn != null){
			return true;
		}else{
			return false;
		}
	}
	
	public void buscarContato(String busca){
		try{
			String query = "SELECT * FROM cadastro WHERE cadastro.idCadastro ='" + busca + "';";
			this.rs = this.stmt.executeQuery(query);
			while(rs.next()){
				System.out.println("ID: " + this.rs.getInt("idCadastro"));
			}	
					
				
		}catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
	}
	
	public void listarContatos(){
		try{
			String query = "SELECT * FROM cadastro ORDER BY nome;";
			this.rs = this.stmt.executeQuery(query);
			while (this.rs.next()){
				System.out.println("Nome: " + this.rs.getString("nome"));
			}
		}catch(Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
	}
	
	public void inserirAdministrador(String usuario, String senha, String email, String nome){
		try{
			String query = "INSERT INTO cadastro (usuario, senha, email, nome, tipoUsuario) VALUES ('" + usuario + "', '" + email + "', '" + senha + "', '" + nome + "', '" + 1 + "');";
			
			ps = conn.prepareStatement(query, stmt.RETURN_GENERATED_KEYS);
			ps.executeUpdate();
			rs = ps.getGeneratedKeys();
				if (rs.next()){
					final int lasdID = rs.getInt(1);
					JOptionPane.showMessageDialog(null, "O número de matricula gerado foi:  " + lasdID + ". Guarde este número!" );
				}			
		}catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
		
	}
	
	public void inserirBibliotecario(String usuario, String senha, String email, String nome){
		try{
			String query = "INSERT INTO cadastro (usuario, senha, email, nome, tipoUsuario) VALUES ('" + usuario + "', '" + senha + "', '" + email + "', '" + nome + "', '" + 2 + "');";
			ps = conn.prepareStatement(query, stmt.RETURN_GENERATED_KEYS);
			ps.executeUpdate();
			rs = ps.getGeneratedKeys();
				if (rs.next()){
					final int lasdID = rs.getInt(1);
					JOptionPane.showMessageDialog(null, "O número de matricula gerado foi:  " + lasdID + ". Guarde este número!" );
				}
		}catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
		
	}
	
	public void inserirAssociado(String usuario, String senha, String email, String nome, int reservas, String telefone, String endereco, String bairro, String cidade, String estado){
		try{
			String query = "INSERT INTO cadastro (usuario, senha, email, nome, reservas, telefone, endereco, bairro, cidade, estado, tipoUsuario) VALUES ('" + usuario + "', '" + senha + "', '" + email + "', '" + nome + "', '" + reservas + "', '" + telefone + "', '" + endereco + "', '" + bairro + "', '" + cidade + "', '" + estado + "', '" + 3 + "');";
			ps = conn.prepareStatement(query, stmt.RETURN_GENERATED_KEYS);
			ps.executeUpdate();
			rs = ps.getGeneratedKeys();
				if (rs.next()){
					final int lasdID = rs.getInt(1);
					JOptionPane.showMessageDialog(null, "O número de matricula gerado foi:  " + lasdID + ". Guarde este número!" );
				}
		}catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
		
	}
	
	public void inserirLivro(String titulo, int paginas, String genero, String autor, String editora, int reservas){
		try{
			String query = "INSERT INTO livro (titulo, paginas, genero, autor, editora, reservas) VALUES ('" + titulo + "', '" + paginas + "', '" + genero + "', '" + autor + "', '" + editora + "', '" + reservas + "');";
			ps = conn.prepareStatement(query, stmt.RETURN_GENERATED_KEYS);
			ps.executeUpdate();
			rs = ps.getGeneratedKeys();
				if (rs.next()){
					final int lasdID = rs.getInt(1);
					JOptionPane.showMessageDialog(null, "O número de matricula gerado foi:  " + lasdID + ". Guarde este número!" );
				}
		}catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
		
	}
	
	public void editarAdministrador (String usuario, String senha, String email, String nome){
		try{
			String query = "UPDATE cadastro SET senha = '" + senha + "', email = '" + email + "', nome = '" + nome + "' WHERE usuario = '" + usuario + "'; ";
			this.stmt.executeUpdate(query);
		}catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
	}
	
	public void editarBibliotecario (String usuario, String senha, String email, String nome){
		try{
			String query = "UPDATE cadastro SET senha = '" + senha + "', email = '" + email + "', nome = '" + nome + "' WHERE usuario = '" + usuario + "'; ";
			this.stmt.executeUpdate(query);
		}catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
	}
	
	public void editarAssociado (String usuario, String senha, String email, String nome, int reservas, String telefone, String endereco, String bairro, String cidade, String estado ){
		try{
			String query = "UPDATE cadastro SET senha = '" + senha + "', email = '" + email + "', nome = '" + nome + "', reservas = '" + reservas + "', telefone = '" + telefone + "', endereco = '" + endereco + "', bairro = '" + bairro + "', cidade = '" + cidade + "', estado = '" + estado + "' WHERE usuario = '" + usuario + "'; ";
			this.stmt.executeUpdate(query);
		}catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
	}
	
	public void excluiAdministrador(String id){
		try{
			String query = "DELETE FROM cadastro WHERE idCadastro = " + id + "; ";
		}catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
	}
	
	public void excluiBibliotecario(String id){
		try{
			String query = "DELETE FROM cadastro WHERE idCadastro = " + id + "; ";
		}catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
	}
	
	public void excluiAssociado(String id){
		try{
			String query = "DELETE FROM cadastro WHERE idCadastro = " + id + "; ";
		}catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
	}
		
	public void desconectar(){
		try{
			this.conn.close();
		}catch(Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
	}
	
}

15 Respostas

T

Todos esses parâmetros que estão sendo utilizados para montar o atributo ‘query’ possuem valores?

Se algum destes parâmetros estiver nulo, pode estar te retornando uma exception ao tentar concatenar estes parâmetros caso algum esteja de fato nulo.

B

sim, todos os que utilizo na query que solicito tem valores

I

Cara testa um método, se não funcionar, coloca a exception

B

throw sqlexception no result set???

I

Coloca o que produz essa linha
System.out.println("Erro: " + e.getMessage());

B

essa é a classe simples de teste que estou usando:

package projetoStart;

public class Teste{

public static void main(String[] args) {
	
	BancoDeDados banco = new BancoDeDados();
	banco.buscarContato("2");
	banco.listarContatos();
	banco.editarAdministrador("administrador", "testesenha", "email", "nome digdin");
	banco.excluiAssociado("3");
	
	
}

}

e isso é o que o console me retorna:

Erro: null
Erro: null
Erro: null

no método excluiAssociado ele nem erro me retorna :frowning:

B

ah, e pelo menos as consultas de busca e listagem no MySql funcionan direitinho se eu usar os mesmos dados da ‘query’

não cheguei a testar os outros métodos pois é certeza que é algum problema no código, só que como falei, refiz, mudei método, parâmetro, já to a quase 2 dias batendo nessa tecla e não acho solução…

H

Mas no método excluiAssociado nem é realizado um executeUpdate, então nada vai acontecer mesmo.

H

Rapaz, e lá no banco de dados, qual o tipo de dados do atribulo idCadastro é varchar ou seria um valor inteiro?

I

E outra da pra melhorar muita coisa ai, vc fica concatendo query, sendo que nem precisa mais disso, isola a conexão em uma classe, e depois nos seus daos, vc chama ela e usar de uma forma mais adequada.
http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html
Cria objetos, e comece a receber os mesmo nos parametros, fica recebendo 800 parâmetros por método, usa um pouco de oo

B

Esses são os tipos de dados do banco…

E porra, que cabaço eu, nem vi que não tinha colocar o executeUpdate… agora os 4 dão “Erro: Null” :weary:

Vou dar uma olhada no link ali e tentar refazer alguma coisa para ver se resolve, se eu achar a solução comunico, se alguém se tocar de algo, favor me avisa :slight_smile:

Ah, e só para constar, coloquei SQLException em todos os métodos e continua voltando tudo “Erro: Null”

B

sério, to muito no começo, algumas coisas ainda não são tão claras para mim hehe

tu diz então que se eu criar métodos getters e setters é melhor? não sei se entendi certo :frowning: (não me bata por favor!)

H

Olá você criou a coluna tipoUsuario nas suas tabelas? outra coisa troca o System.out.println("Erro: " + e.getMessage()); pelo e.printStackTrace();
Copiei seu código aqui e funcionou, mas pela sua imagem da tabela não tinha acoluna referia, só criei e tudo se resolveu.
Se não resolver com você posta erro completo ai.

B

Existe sim a coluna tipoUsuario, é INT Not Null.

resolvi passar o pente fino no código mais um vez e… pelo menos a busca funcionou…

A cagada que eu fiz?

Esqueci de colocar um “stmt = conn.createStatement();”

H

Se ocorrer algum erro posta ele completo aqui

Criado 23 de março de 2016
Ultima resposta 23 de mar. de 2016
Respostas 15
Participantes 5