Problemas para realizar ações no MySql

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());
		}
	}
	
}

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.

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

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

throw sqlexception no result set???

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

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:

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…

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

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

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

1 curtida

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”

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!)

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.

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();”

Se ocorrer algum erro posta ele completo aqui