Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

EMSO.EXE

Erro com insert, update, delete e select

Recommended Posts

Pessoal estou com um problema no select, insert, updade e delete desse código... ele executa as instruções no registro quando quero, porém sempre mostra essa mensagem NO RESULTSET WAS PRODUCED e quando deleto um registro ele só deixa de exibir/localizar ele quando fecho e abro a aplicação. Não entendo o que pode ser... Alguém poderia me dizer o que estou errando? Valew!

 

import java.sql.*;

public class LivroDAL {

private static boolean erro;
private static String mens;
private static Connection con;

public static void conecta(String _alias, String _usuario, String _senha)
{
try {
	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	con = DriverManager.getConnection("jdbc:odbc:" + _alias,_usuario,_senha);
}
catch(Exception e){
	System.out.println("Erro: " + e.getMessage());
}
}

public static void desconecta()
{
try{
con.close();
}
catch(Exception e){
	System.out.println("Erro: " + e.getMessage());
}
}

public static void inseriUmLivro(Livro umlivro)
{
try {
	conecta("UmAlias","","");
	PreparedStatement st = con.prepareStatement("INSERT INTO TabLivros (titulo,autor,editora,anoedicao,localizacao) Values (?,?,?,?,?)");
	st.setString(1,umlivro.getTitulo());
	st.setString(2,umlivro.getAutor());
	st.setString(3,umlivro.getEditora());
	st.setInt(4,Integer.parseInt(umlivro.getAnoEdicao()));
	st.setString(5,umlivro.getLocalizacao());
	st.executeUpdate();
	desconecta();
	}
	catch(Exception e){
		setErro(e.getMessage());
	}
}

public static void consultaUmLivro(Livro umlivro)
{
try {
	conecta("UmAlias","","");
	ResultSet rs;
	Statement st = con.createStatement();
	rs = st.executeQuery("SELECT * FROM TabLivros WHERE titulo='"+ umlivro.getTitulo() +"'");
	while (rs.next())
	{
		  umlivro.setAutor(rs.getString("autor"));
		  umlivro.setEditora(rs.getString("editora"));
		  umlivro.setAnoEdicao(rs.getString("anoedicao"));
		  umlivro.setLocalizacao(rs.getString("localizacao"));
	}

	desconecta();
	}
	catch(Exception e){
		setErro(e.getMessage());
	}
}

public static void alteraUmLivro(Livro umlivro)
{
try {
	conecta("UmAlias","","");
	ResultSet rs;
	Statement st = con.createStatement();
	rs = st.executeQuery("UPDATE TabLivros SET autor='"+ umlivro.getAutor() +"', editora='"+ umlivro.getEditora() +"', anoedicao='"+ umlivro.getAnoEdicao() +"', localizacao='"+ umlivro.getLocalizacao() +"' WHERE titulo='"+ umlivro.getTitulo() +"'");
	while (rs.next())
	{
		  umlivro.setTitulo(rs.getString("titulo"));
		  umlivro.setAutor(rs.getString("autor"));
		  umlivro.setEditora(rs.getString("editora"));
		  umlivro.setAnoEdicao(rs.getString("anoedicao"));
		  umlivro.setLocalizacao(rs.getString("localizacao"));
	}
	desconecta();
	}
	catch(Exception e){
		setErro(e.getMessage());
	}
}

public static void deletaUmLivro(Livro umlivro)
{
try {
	conecta("UmAlias","","");
	ResultSet rs;
	Statement st = con.createStatement();
	rs = st.executeQuery("DELETE FROM TabLivros WHERE titulo='"+ umlivro.getTitulo() +"'");
	while (rs.next())
	{
		  umlivro.setTitulo(rs.getString("titulo"));
		  umlivro.setAutor(rs.getString("autor"));
		  umlivro.setEditora(rs.getString("editora"));
		  umlivro.setAnoEdicao(rs.getString("anoedicao"));
		  umlivro.setLocalizacao(rs.getString("localizacao"));
	}
	desconecta();
	}
	catch(Exception e){
		setErro(e.getMessage());
	}
}

public static void setErro(boolean _erro)
{
erro=_erro;
}

public static void setErro(String _mens)
{
erro=true;
mens=_mens;
}

public static boolean getErro() {return erro;}
public static String getMens() {return mens;}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comandos para insert, update e delete devem ser executados com PreparedStatement.executeUpdate e não com o executeQuery.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente vergil,

- Segue um exemplo de insert com PreparedStatement.

 

public void save(Object o) throws SQLException {

       if (o instanceof Cliente) {

           Cliente c = (Cliente) o;

           PreparedStatement stmt = co.con.prepareStatement(
                   "INSERT INTO clientes( cpf, rg, nome, logradouro, bairro, cidade, estado, email, nascimento, sexo, cep  ) " +
                   "VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

           stmt.setString(1, c.getCpf());
           stmt.setString(2, c.getRg());
           stmt.setString(3, c.getNome());
           stmt.setString(4, c.getLogradouro());
           stmt.setString(5, c.getBairro());
           stmt.setString(6, c.getCidade());
           stmt.setString(7, c.getEstado());
           stmt.setString(8,c.getEmail());
           stmt.setString(9, c.getNascimento());
           stmt.setString(10, c.getSexo());
           stmt.setString(11, c.getCEP());


           stmt.execute();
           stmt.close();

       } else {
           throw new SQLException("Tipo de objeto errado. Esperando: " + Cliente.class);
       }

   }

 

 

Ou update

 



 public void update (Cliente cli) {

    try{

       PreparedStatement stmt = co.con.prepareStatement(

                   "UPDATE clientes " +
                   "SET " +

                   "    rg   = ?, " +
                   "    nome = ?, " +
                   "    cidade = ?, " +
                   "    telefone = ? " +

                   "WHERE " +
                   "    cpf = ?");

           stmt.setString(1, cli.getRg());
           stmt.setString(2, cli.getNome());
           stmt.setString(3, cli.getCidade());
           stmt.setString(4, cli.getTelefone());
           stmt.setString(5, cli.getCpf());

           stmt.execute();
           stmt.close();


         }  catch(SQLException e){
           JOptionPane.showMessageDialog(null, "ERRO..."+e.getMessage(), "Alteração de Clientes", 0);

    }

   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.