Orientação a Objetos com Swing java [Resolvido]

6 respostas
J

E ai pessoal, to com uma dificuldade aqui e gostaria do apoio de vcs.
Tenho um programa CRUD funcionando perfeitamente, só que eu queria diminuir mais ele, queria fazer ele Orientado a Objetos, ele está estruturado, então da para imaginar a bagunça né hauhauha.
Vou dar um trecho de código que eu gostaria que vcs me dessem este apoio e eu entendendo como faz, creio que farei nas outras.

try {
               Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost/tabela", "usuario", "senha");
            String sql = "INSERT INTO cadastrados (nome, endereco, complemento, numero, bairro, fixo, celular)"
                    + "VALUES ('" + txtnome.getText() + "',"
                    + "'" + txtendereco.getText() +"', "
                    + "'" + txtcomplemento.getText() +"', "
                    + "'" + txtnumero.getText() +"', "
                    + "'" + txtbairro.getText() +"', "
                    + "'" + txtfixo.getText() +"', "
                    + "'" + txtcel.getText() +"') ";
             java.sql.Statement stm = con.createStatement();
            stm.executeUpdate(sql);          
            JOptionPane.showMessageDialog( this, "Dados Salvos com Sucesso! ");          
            con.close();
            limparTxt();
            }  catch( SQLException e){
            JOptionPane.showMessageDialog(this,  "Erro  Cmdo  SQL  " + e.getMessage() );
           
            } catch( ClassNotFoundException e){
            JOptionPane.showMessageDialog( this, " Driver não encontrado " );
        }

Este é meu botão cadastrar feito no swing do netbens.

Eu queria que ai ele recebesse somente os métodos da conexão do banco de dados e os métodos do botão cadastrar. Só que eu não sei como fazer direito isso, sempre da errado.
Gostaria que cada classe (cadastrar e conexão) estivessem em um pacote diferente (pois vou fazer pacote conexão e pacote CRUD) para manter uma organização apropriada e eu reutilizar futuramente os códigos, essa bagunça se eu deletar o Jframe,,vai tudo nele hauhauha.
Se alguem me mostrar como eu posso fazer a classe de conexaõ e Cadastrar eu agradeceria muito.

Me deem este apioio ai,,desde ja agradeço.

6 Respostas

ErickRAR

Primeiro, até pro código ficar mais organizado, passe os parametros de forma correta para não sofrer de sql injection.

Agora pro seu DAO:
No treco do código você preenche um objeto Cadastrado e depois passa pasa o seu método no dao:

Cadastrado c = mew Cadastrado();
c.setNome(txtnome.getText());
c.setEndereco(txtendereco.getText());
....
SeuDAO dao = new SeuDAO();
dao.incluir(cadastrado);

seu método dao:

public void incluir(Cadastrado c){
//coloca esse seu códico para incluir
}

Depois cria uma classe Conexao e coloca esse Class.forName o Connection. Essa classe terá um getConnection(), assim não tem que repetir o código toda hora, basta fazer Conexao.getConecction();

Esse é o basico. Se for seguir o modelo MVC, não poderá nunca chamar o dao.incluir(cadastrado); la em cima, pois pelo que vi isso ta na Tela. Vai ter que criar uma classe Controle, ela irá receber os eventos que ocorrem na tela e, como o nome diz, fazer o controle desses eventos.

michetti

@ErickRar

Mesmo em desktop pode sofrer sql injection?? pensei que fosse so em web :open_mouth:

J

Pow,Vlw,vou tentar fazer aqui,se der algum erro eu retorno

ErickRAR

michetti:
@ErickRar

Mesmo em desktop pode sofrer sql injection?? pensei que fosse so em web :open_mouth:

Sim, é o que o usuário digitar, aí tanto faz se ele digitar em web ou destkop.

ViniGodoy

michetti:
@ErickRar

Mesmo em desktop pode sofrer sql injection?? pensei que fosse so em web :open_mouth:

E não é só por causa do MySQL Injection. O que aconteceria se o nome do digitado fosse MacDonald’s?

Usar os parâmetros da forma correta evita que você tenha que lidar manualmente com caracteres especiais e formatos de datas (cada banco tem o seu). Além disso, permite que o driver envie os dados de maneira mais enxuta e otimizada para o banco (em binário, ao invés de texto), o que pode ser bastante valioso em batch updates.

J

Pow,vlw mesmo mano,deu certo aki,Brigadão

Criado 22 de fevereiro de 2014
Ultima resposta 23 de fev. de 2014
Respostas 6
Participantes 4