EMSO.EXE 0 Denunciar post Postado Maio 29, 2011 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
Vergil 15 Denunciar post Postado Maio 30, 2011 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
Everton. 0 Denunciar post Postado Julho 10, 2011 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