Java/Mysql

Olá Pessoal, fiquei um tempo fora, estou pesquisando sobre as operações basicas em mysql juntamente com java, criei um banco simples e estava tentando fazr as operações, porem estou perdido no update e no delete, o include e o select funcionam mas oos outros nem sei!!

sera que poderiam dar uma olhada e me dizer o que fzr para arrumar o update e o delete:

package br.com.datatec.controle;


import br.datatec.com.modelo.vo.UsuarioVo;
import java.util.*;
import java.sql.*;
import java.util.ArrayList;

public class ConectaBanco
{
    private String url;
    private String login;
    private String senha;

    public ConectaBanco(String url, String login, String senha)
    {
        setUrl(url);
        setLogin(login);
        setSenha(senha);
    }

    public String getLogin()
    {
        return login;
    }

    public void setLogin(String login)
    {
        this.login = login;
    }

    public String getSenha()
    {
        return senha;
    }

    public void setSenha(String senha)
    {
        this.senha = senha;
    }

    public String getUrl()
    {
        return url;
    }

    public void setUrl(String url)
    {
        this.url = url;
    }


    
    public void insere(String s, String msg)//Para inserir valores no banco de dados
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();//Cadastrando o driver

            try
            {
                Connection conn = DriverManager.getConnection(getUrl(), getLogin(), getSenha());
                try
                {
                    String sql = s;
                    Statement stm = conn.createStatement();
                    try
                    {
                        stm.executeUpdate(sql);
                        System.out.println(msg);
                    }
                    catch (Exception ex)
                    {
                        System.out.println("\nErro no resultset!\n" + ex);
                    }
                }
                catch (Exception ex)
                {
                    System.out.println("\nErro no statement!");
                }
            }
            catch (Exception ex)
            {
                System.out.println("\nErro no connection!");
            }
        }
        catch (Exception ex)
        {
            System.out.println("\nDriver nao pode ser carregado!");
        }

    }

    public ArrayList busca(String s)
    {
        ArrayList amigo = new ArrayList();
        UsuarioVo a = new UsuarioVo();
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            //System.out.println("\n Salvando URL: ...\n");
            try
            {
                Connection conn = DriverManager.getConnection(getUrl(), getLogin(), getSenha());
                try
                {
                    String sql = s;
                    Statement stm = conn.createStatement();
                    try
                    {
                        ResultSet rs = stm.executeQuery(sql);
                        while (rs.next())
                        {
                            a.setNome(rs.getString(1));
                            a.setBairro(rs.getString(2));
                            a.setCidade(rs.getString(3));
                            a.setNumTel(rs.getString(4));
                            a.setCpf(rs.getString(5));
                            amigo.add(a);
                        }
                        //System.out.println(rs.getInt(1));
                    }
                    catch (Exception ex)
                    {
                        System.out.println(ex);
                    }
                }
                catch (Exception ex)
                {
                    System.out.println("\nErro no statement!");
                }
            }
            catch (Exception ex)
            {
                System.out.println("\nErro no connection! " + ex);
            }
        }
        catch (Exception ex)
        {
            System.out.println("\nDriver nao pode ser carregado!");
        }
        return amigo;
    }
    public void Excluir(String s)
    {
        UsuarioVo a = new UsuarioVo();
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            //System.out.println("\n Salvando URL: ...\n");
            try
            {
                Connection conn = DriverManager.getConnection(getUrl(), getLogin(), getSenha());
                try
                {
                    String sql = s;
                    Statement stm = conn.createStatement();
                    try
                    {
                          // Prepare a statement to insert a record
                        String query = "DELETE FROM usuario WHERE id ='" + a.getId() + "';";

                        // Execute the delete statement
                        int deleteCount = stm.executeUpdate(query);
                        // deleteCount contains the number of deleted rows

                        // Use a prepared statement to delete

                        // Prepare a statement to delete a record
                        query = "DELETE FROM usuario WHERE id ='" + a.getId() + "';";
                        PreparedStatement pstmt = conn.prepareStatement(query);
                        // Set the value
                        pstmt.setString(1, "a string");
                        deleteCount = pstmt.executeUpdate();
                       // System.err.println(e.getMessage());
                    }
                    catch(Exception e)
                    {
                        System.out.println("Erro no Delete!");
                    }
                }
                catch(Exception e)
                {
                    System.out.println("Erro No statement!");
                }
            }
            catch(Exception e)
            {
                System.out.println("Deu erro na conexão!");
            }
        }
        catch(Exception e)
        {
            System.out.println("Deu erro na parte de carregar o driver!");
        }
    }
    public void Alterar(String s)
    {
        UsuarioVo a = new UsuarioVo();
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            try
            {
                Connection conn = DriverManager.getConnection(getUrl(), getLogin(), getSenha());
                try
                {
                    String sql = s;
                    Statement stm = conn.createStatement();
                    try
                    {
                         // Prepare a statement to update a record
                        String query = "UPDATE usuario SET nome = '" + a.getNome() + "' WHERE nome = '" + a.getNomeAlter() +"'";

                        // Execute the insert statement
                        int updateCount = stm.executeUpdate(query);
                        // updateCount contains the number of updated rows
                    }
                    catch(Exception e)
                    {
                        System.out.println("Erro no Update!!!");
                    }
                }
                catch(Exception e)
                {
                    System.out.println("Erro No statement!");
                }
            }
            catch(Exception e)
            {
                System.out.println("Deu erro na conexão!");
            }
        }
        catch(Exception e)
        {
            System.out.println("Deu erro na parte de carregar o driver!");
        }

    }
}[/code]

e tabm a classe dao:[code]

package br.com.datatec.modelo.dao;

import br.com.datatec.controle.ConectaBanco;
import br.datatec.com.modelo.vo.UsuarioVo;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Scanner;
import javax.naming.NamingException;

/**
 *
 * @author desenvolvimento
 */
public class UsuarioDao
{

    Scanner s = new Scanner(System.in);
    UsuarioVo user = new UsuarioVo();
    ConectaBanco cb = new ConectaBanco("jdbc:mysql://localhost:3306/mvcronaldo", "root", "rootpwd");
    
    public void IncluirUsuario() throws SQLException
    {
        System.out.println("Insira um nome de Usuário:\n");
        user.setNome(s.next());
        System.out.println("Insira um bairro:\n");
        user.setBairro(s.next());
        System.out.println("Insira seu cpf:\n");
        user.setCpf(s.next());
        System.out.println("Insira seu numero de telefone:\n");
        user.setNumTel(s.next());
        System.out.println("Insira o nome da cidade:\n");
        user.setCidade(s.next());
         cb.insere("INSERT INTO mvcronaldo.usuario VALUES (NULL , '" + user.getNome() + "', '" + user.getBairro() + "', '" + user.getCpf() + "', '" + user.getNumTel() + "', '" + user.getCidade() + "'); ", "Gravado corretamente...");

    }
    public void ExcluirUsuário()
    {
        UsuarioVo vo2 = new UsuarioVo();
        System.out.println("Digite o id do Usuário que deseja excluir:\n");
        user.setId(Integer.parseInt(s.next()));
        cb.Excluir("DELETE FROM usuario WHERE id = '" + user.getId());
        
    }
    public void LocalizarUsuário()
    {
        UsuarioVo voExc = new UsuarioVo();
        System.out.println("Digite exatamente como foi adicionado o nome do Usuário que deseja localizar ou então seu código");
        String usuarioLocalizar = s.next();
        ArrayList a = new ArrayList();
        a =  cb.busca("SELECT * FROM mvcronaldo.usuario WHERE nome = '" + usuarioLocalizar+ "';");
        if (a.size()>0)
        {
            System.out.println("Usuario Encontrado!!!\n");
            for(int i = 0; i < a.size(); i ++)
            {
                System.out.println(a.get(i));
                //a.get(0).show(a);
            }
        }
        else
        {
               System.out.println("Não Encontrado!!!");
        }

    }
    public void AlterarUsuário()
    {
        UsuarioVo voAlter = new UsuarioVo();
        System.out.println("Digite o nome do Usuario que deseja alterar:");
        user.setNomeAlter(s.next());
        System.out.println("Digite por qual nome " +user.getNomeAlter()+ " deve ser trocado:");
        user.setNome(s.next());
        cb.Alterar("UPDATE usuario SET nome = '" + user.getNome() + "' WHERE nome = '" + user.getNomeAlter() +"'");
    }

}

POr favor me digam o que fazer!!!abrçs

Olá, bem achei alguns detalhes aqui, vamos tentar resolver.

package br.com.datatec.controle;


import br.datatec.com.modelo.vo.UsuarioVo;
import java.util.*;
import java.sql.*;
import java.util.ArrayList;

public class ConectaBanco
{
    private String url;
    private String login;
    private String senha;

    public ConectaBanco(String url, String login, String senha)
    {
        setUrl(url);
        setLogin(login);
        setSenha(senha);
    }

    public String getLogin()
    {
        return login;
    }

    public void setLogin(String login)
    {
        this.login = login;
    }

    public String getSenha()
    {
        return senha;
    }

    public void setSenha(String senha)
    {
        this.senha = senha;
    }

    public String getUrl()
    {
        return url;
    }

    public void setUrl(String url)
    {
        this.url = url;
    }


    
    public void insere(String s, String msg)//Para inserir valores no banco de dados
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();//Cadastrando o driver

            try
            {
                Connection conn = DriverManager.getConnection(getUrl(), getLogin(), getSenha());
                try
                {
                    String sql = s;
                    Statement stm = conn.createStatement();
                    try
                    {
                        stm.executeUpdate(sql);
                        System.out.println(msg);
                    }
                    catch (Exception ex)
                    {
                        System.out.println("\nErro no resultset!\n" + ex);
                    }
                }
                catch (Exception ex)
                {
                    System.out.println("\nErro no statement!");
                }
            }
            catch (Exception ex)
            {
                System.out.println("\nErro no connection!");
            }
        }
        catch (Exception ex)
        {
            System.out.println("\nDriver nao pode ser carregado!");
        }

    }

    public ArrayList busca(String s)
    {
        ArrayList amigo = new ArrayList();
        UsuarioVo a = new UsuarioVo();
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            //System.out.println("\n Salvando URL: ...\n");
            try
            {
                Connection conn = DriverManager.getConnection(getUrl(), getLogin(), getSenha());
                try
                {
                    String sql = s;
                    Statement stm = conn.createStatement();
                    try
                    {
                        ResultSet rs = stm.executeQuery(sql);
                        while (rs.next())
                        {
                            a.setNome(rs.getString(1));
                            a.setBairro(rs.getString(2));
                            a.setCidade(rs.getString(3));
                            a.setNumTel(rs.getString(4));
                            a.setCpf(rs.getString(5));
                            amigo.add(a);
                        }
                        //System.out.println(rs.getInt(1));
                    }
                    catch (Exception ex)
                    {
                        System.out.println(ex);
                    }
                }
                catch (Exception ex)
                {
                    System.out.println("\nErro no statement!");
                }
            }
            catch (Exception ex)
            {
                System.out.println("\nErro no connection! " + ex);
            }
        }
        catch (Exception ex)
        {
            System.out.println("\nDriver nao pode ser carregado!");
        }
        return amigo;
    }
    public void Excluir(String s)
    {
        UsuarioVo a = new UsuarioVo(); // --> Você esta instanciando um Objeto e do tipo UsuarioVO; aqui esta Ok, porem na linha 161 do seu código você esta usando ele, só que não passou nenhum parâmetro para ID; ou seja o primeiro erro esta aqui.
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            //System.out.println("\n Salvando URL: ...\n");
            try
            {
                Connection conn = DriverManager.getConnection(getUrl(), getLogin(), getSenha());
                try
                {
                    String sql = s; // aqui sql esta recebendo s, e logo abaixo você esta usando um outra string chamada query para colocar o sql que teoricamente estaria aqui.
                    Statement stm = conn.createStatement();
                    try
                    {
                          // Prepare a statement to insert a record
                        String query = "DELETE FROM usuario WHERE id ='" + a.getId() + "';"; // --> linha 146 o objeto usuario esta criado porem não passou nenhum parâmetro para o mesmo, exemplo a.setId(1);

                        // Execute the delete statement
                        int deleteCount = stm.executeUpdate(query);  // Provavelmente aqui por você não passar nenhum parâmetro para [b]a[/b], como o mesmo esta vazio ele deve dar erro no sql.
                        // deleteCount contains the number of deleted rows

                        // Use a prepared statement to delete

                        // Prepare a statement to delete a record
                        query = "DELETE FROM usuario WHERE id ='" + a.getId() + "';"; // aqui novamente o mesmo sql da variável query acima;
                        PreparedStatement pstmt = conn.prepareStatement(query); // aqui executando novamente a mesma sql acima, porem agora com PreparedStatement, que alias eu te aconselho o uso sempre.
                        // Set the value
                        pstmt.setString(1, "a string"); // aqui tem uma passagem de parametro para o Statement que nao ficou clara, seria o código o usuário a ser deletado???
                        deleteCount = pstmt.executeUpdate();
                       // System.err.println(e.getMessage());
                    }
                    catch(Exception e)
                    {
                        System.out.println("Erro no Delete!");
                    }
                }
                catch(Exception e)
                {
                    System.out.println("Erro No statement!");
                }
            }
            catch(Exception e)
            {
                System.out.println("Deu erro na conexão!");
            }
        }
        catch(Exception e)
        {
            System.out.println("Deu erro na parte de carregar o driver!");
        }
    }
    public void Alterar(String s)
    {
        UsuarioVo a = new UsuarioVo(); // aqui novamente vc esta criando o UsuarioVO() porem novamente um objeto sem dados.
        a.setNomeAlter("Jõaooo da Silva"); // aqui esta a chave para a atualização no banco
        a.setNome("João da Silva");
        a.setEndereco("Rua tal");
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            try
            {
                Connection conn = DriverManager.getConnection(getUrl(), getLogin(), getSenha());
                try
                {
                    String sql = s;
                    Statement stm = conn.createStatement();
                    try
                    {
                         // Prepare a statement to update a record
                        String query = "UPDATE usuario SET nome = '" + a.getNome() + "' WHERE nome = '" + a.getNomeAlter() +"'";

                        // Execute the insert statement
                        int updateCount = stm.executeUpdate(query);
                        // updateCount contains the number of updated rows
                    }
                    catch(Exception e)
                    {
                        System.out.println("Erro no Update!!!");
                    }
                }
                catch(Exception e)
                {
                    System.out.println("Erro No statement!");
                }
            }
            catch(Exception e)
            {
                System.out.println("Deu erro na conexão!");
            }
        }
        catch(Exception e)
        {
            System.out.println("Deu erro na parte de carregar o driver!");
        }

    }
}

Supondo-se que você tivesse o seguinte:

public class UsuarioVO {
    private int id;
    private String nome;

    public void setId(int id) {
        this.id = id;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getId() {
        return id;
    }

    public String getNome() {
        return = nome;
    }
}

e na sua classe de movimento no banco vc teria isso
public class UsuariosDAO {
    public void editarUsuario(UsuarioVO usuario) { // aqui espera um objeto do tipo UsuarioVO()
        //Considerando que você tenha feito a conexão e tudo mais com o banco vai somente ai os dados da manipulação no banco.

        try {
            PreparedStatement pst = conection.prepareStatement("update usuarios set nome = ? where id = ?");
            // aqui passamos os dados do usuairo que foi passado como parametro na assinatura do metodo para o pst;
            pst.setString(1, usuario.getNome()); 
            pst.setInt(2, usuario.getId());
            pst.executeUpdate();
            conection.commit();
        } catch (SQLException e) {
            conection.Rollback();
        }
    }
}

// Lembrando que não mencionei as informações a respeito da parte de conexao com o banco que estariam acima antes do prepareStatemente();

public class Testar {
    public static void main(String[] args) {
        // Criamos um objeto do tipo UsuarioVO e passamos dados para o mesmo; 
        UsuarioVO editar = new UsuarioVO();
        editar.setId(123);
        editar.setNome("Jonas Brothers");

        new UsuariosDAO().editarUsuario(editar); // Aqui criamos um Objeto da classe de manipulação e já chamamos o método editarUsuario passando o objeto criado acima para a atualização no banco
    }
// novamente lembrando que este exemplo e só para demostrar, falta código relacionado com a conexão e outras implementações, outra coisa escrevi isso tudo dentro do próprio fórum então se tiver algum erro nas palavras reservadas é por isso.
}

espero que isso ajude, caso os dois posts não tiverem relação com seu problema por favor desconsidere-os.

Att,
André Dalcin

Esse curso, aliás para ter acesso aos vídeos do portal DevMedia vale cada centavo o valor…

poxa andré vlw pela atenção!!!

Vou tentar corrigir meus erros no codigo, observando o que voce me passou!!!

brigadao!!!

abrçs

tUA DICA DO UPDATE FOI TOTALMENTE ACERTADA, q burrice a minha, coisa simples, mas se não fosse voce, eu ficaria um tempao p descobrir, isso se eu descobrisse!!

vou ver o delete se consigoo!!!

vlw

Naquele meu codigo, supondo que o “s”, que recebi de parametro contenha todo o comando sql, como ficaria essa classe “conecta banco” se eu quisesse deletar um registro???

Classe Conecta Banco

[code] public void Excluir(String s)
{
try
{
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
//System.out.println("\n Salvando URL: …\n");
try
{
Connection conn = DriverManager.getConnection(getUrl(), getLogin(), getSenha());
try
{
String sql = s;
Statement stm = conn.createStatement();
try
{
//String query = “DELETE FROM usuario WHERE id =’” + a.getId() + “’;”;

                    // Execute the delete statement
                    int deleteCount = stm.executeUpdate(s);
                    System.out.println("Deletado com sucesso!");
                    // deleteCount contains the number of deleted rows

                    // Use a prepared statement to delete

                    // Prepare a statement to delete a record
                    //query = "DELETE FROM usuario WHERE id ='" + a.getId() + "';";
                    //PreparedStatement pstmt = conn.prepareStatement(s);
                    // Set the value
                    //pstmt.setString(1, "a string");
                    //deleteCount = pstmt.executeUpdate();
                   // System.err.println(e.getMessage());
                }
                catch(Exception e)
                {
                    System.out.println("Erro no Delete!");
                }
            }
            catch(Exception e)
            {
                System.out.println("Erro No statement!");
            }
        }
        catch(Exception e)
        {
            System.out.println("Deu erro na conexão!");
        }
    }
    catch(Exception e)
    {
        System.out.println("Deu erro na parte de carregar o driver!");
    }
}[/code]

Classe UsuarioDao

[code]
public void ExcluirUsuário()
{
UsuarioVo vo2 = new UsuarioVo();
System.out.println(“Digite o id do Usuário que deseja excluir:\n”);
vo2.setId(Integer.parseInt(s.next()));
cb.Excluir(“DELETE FROM usuario WHERE id = '” + vo2.getId());

}[/code]

ja achei meu erro:

Eu havia no Usuario dao, esquecido de por o “’;”; no final do sql!!!rsrsr

Nuss…vlw msm ein…brigadao pela atenção abrs!!!

No meu caso so posso verificar se existe o usuario no banco, seria possível exibir os valores encontrados no select, naum consegui ainda!!!:
tabela usuario- id, nome, bairro, cpf, numtel, cidade;

Classe Usuario Dao[code]
public void LocalizarUsuário()
{
UsuarioVo voExc = new UsuarioVo();
System.out.println(“Digite exatamente como foi adicionado o nome do Usuário que deseja localizar ou então seu código”);
String usuarioLocalizar = s.next();
ArrayList a = new ArrayList();
a = cb.busca(“SELECT * FROM mvcronaldo.usuario WHERE nome = '” + usuarioLocalizar+ “’;”);
if (a.size()>0)
{
System.out.println(“Usuario Encontrado!!!\n”);
/for(int i = 0; i < a.size(); i ++)
{
System.out.println(a.get(i));
//a.get(0).show(a);
}
/
}
else
{
System.out.println(“Não Encontrado!!!\n”);
}

}[/code]

Classe ConectaBanco

public ArrayList busca(String s) { ArrayList amigo = new ArrayList(); UsuarioVo a = new UsuarioVo(); try { Class.forName("com.mysql.jdbc.Driver").newInstance(); //System.out.println("\n Salvando URL: ...\n"); try { Connection conn = DriverManager.getConnection(getUrl(), getLogin(), getSenha()); try { String sql = s; Statement stm = conn.createStatement(); try { ResultSet rs = stm.executeQuery(sql); while (rs.next()) { a.setNome(rs.getString(1)); a.setBairro(rs.getString(2)); a.setCidade(rs.getString(3)); a.setNumTel(rs.getString(4)); a.setCpf(rs.getString(5)); amigo.add(a); } //System.out.println(rs.getInt(1)); } catch (Exception ex) { System.out.println("Problemas na busca!"); } } catch (Exception ex) { System.out.println("\nErro no statement!"); } } catch (Exception ex) { System.out.println("\nErro no connection! " + ex); } } catch (Exception ex) { System.out.println("\nDriver nao pode ser carregado!"); } return amigo; }

Por favor verifique isso p mim!!!

Brigadão de novo!!!

rsrrs…parece ate brincadeira, mas j aconsegui tbm!!!brigadao ein!!!abr~s