Ajuda com conexão com sql

4 respostas
ursodamongolia
// Importa os pacotes necessários
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.DateFormat;  
import java.text.ParseException;  
import java.text.SimpleDateFormat;  
import java.util.GregorianCalendar; 
/** CadastroUsuario
 * [ coloque aqui a descrição da classe ]
 * @author Fernando Anselmo © Nov - 2010
 * @version 1.0
 */
public class CadastroUsuario extends JFrame {
    GregorianCalendar calendar = new GregorianCalendar(); 
    SimpleDateFormat formatador = new SimpleDateFormat("dd' de 'MMMMM' de 'yyyy' - 'HH':'mm'h'"); 
    // Bloco 1 - Dados dos Objetos da Janela
    // Bloco 1 - Objetos da Janela
    private JLabel lblSobr;
    private JLabel lblEmail;
    private JLabel lblNome;
    public JTextField txtNome;
    public JTextField txtSobr;
    public JTextField txtEmail;
    private JLabel lblusuario;
    private JLabel lblSenha;
    public JTextField txtUsuario;
    public JPasswordField pssSenha;
    private JLabel lblDataca;
    private JLabel lblData;
    private JButton btnIncluir;
    private JButton btnLimpar;
    private JButton btnExcluir;
    private JButton btnSair;
    private JButton btnConsulta;
    private JLabel lblPos;
    private JTextField txtPos;

    public CadastroUsuario() {
        // Bloco 2 - Dados da Criação da Janela
        // Bloco 2 - Definição dos dados da Janela
        this.getContentPane().setLayout(null);
        this.getContentPane().setBackground(new Color(238, 238, 238));
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        this.setSize(new java.awt.Dimension(427, 240));
        this.setLocation((screenSize.width-427)/2,(screenSize.height-240)/2);
        this.setTitle("Cafeteira - Versão 1.11 - Java");
        this.setResizable(false);

        // Bloco 3 - Dados da Criação dos Controles na Janela
        // Bloco 3 - Criação dos Objetos na Janela
        lblSobr = new JLabel("Sobrenome:");
        lblSobr.setBounds(new Rectangle(9, 50, 80, 13));
        this.getContentPane().add(lblSobr, null);
        lblEmail = new JLabel("Email:");
        lblEmail.setBounds(new Rectangle(9, 82, 57, 13));
        this.getContentPane().add(lblEmail, null);
        lblNome = new JLabel("Nome:");
        lblNome.setBounds(new Rectangle(9, 19, 45, 13));
        this.getContentPane().add(lblNome, null);
        txtNome = new JTextField();
        txtNome.setBounds(new Rectangle(103, 17, 100, 21));
        this.getContentPane().add(txtNome, null);
        txtSobr = new JTextField();
        txtSobr.setBounds(new Rectangle(103, 48, 189, 21));
        this.getContentPane().add(txtSobr, null);
        txtEmail = new JTextField();
        txtEmail.setBounds(new Rectangle(103, 80, 188, 21));
        this.getContentPane().add(txtEmail, null);
        lblusuario = new JLabel("Usuario:");
        lblusuario.setBounds(new Rectangle(9, 112, 57, 13));
        this.getContentPane().add(lblusuario, null);
        lblSenha = new JLabel("Senha:");
        lblSenha.setBounds(new Rectangle(9, 142, 57, 13));
        this.getContentPane().add(lblSenha, null);
        txtUsuario = new JTextField();
        txtUsuario.setBounds(new Rectangle(103, 112, 188, 21));
        this.getContentPane().add(txtUsuario, null);
        pssSenha = new JPasswordField();
        pssSenha.setBounds(new Rectangle(103, 140, 188, 21));
        this.getContentPane().add(pssSenha, null);
        lblDataca = new JLabel("Data Cadastro:");
        lblDataca.setBounds(new Rectangle(9, 171, 90, 13));
        this.getContentPane().add(lblDataca, null);
        lblData = new JLabel(formatador.format(calendar.getTime()));
        lblData.setBounds(new Rectangle(103, 172, 188, 13));
        this.getContentPane().add(lblData, null);
        lblPos = new JLabel("Pos.");
        lblPos.setBounds(new Rectangle(208, 20, 40, 13));
        this.getContentPane().add(lblPos, null);
        txtPos = new JTextField();
        txtPos.setBounds(new Rectangle(241, 16, 50, 21));
        this.getContentPane().add(txtPos, null);
        btnIncluir = new JButton("Incluir");
        btnIncluir.setBounds(new Rectangle(304, 10, 100, 30));
        this.getContentPane().add(btnIncluir, null);
        btnIncluir.addActionListener (new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    // Chamada a um método
                    txtNome.getText();
                    txtSobr.getText();
                    txtEmail.getText();
                    txtUsuario.getText();
                    pssSenha.getPassword();    
                }
            });
        btnLimpar = new JButton("Limpar");
        btnLimpar.setBounds(new Rectangle(304, 51, 100, 30));
        this.getContentPane().add(btnLimpar, null);
        btnLimpar.addActionListener (new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    // Chamada a um método
                    txtNome.setText("");
                    txtSobr.setText("");
                    txtEmail.setText("");
                    txtUsuario.setText("");
                    pssSenha.setText("");
                    //String numero = txtPos.getText();
                    int numerais = Integer.parseInt(txtPos.getText());
                    txtPos.setText(numerais + "1");
                    txtNome.requestFocus();
                }
            });
        btnExcluir = new JButton("Excluir");
        btnExcluir.setBounds(new Rectangle(304, 93, 100, 30));
        this.getContentPane().add(btnExcluir, null);
        btnExcluir.addActionListener (new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    // Chamada a um método
                }
            });
        btnSair = new JButton("Sair");
        btnSair.setBounds(new Rectangle(304, 170, 100, 30));
        this.getContentPane().add(btnSair, null);
        btnSair.addActionListener (new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    // Chamada a um método
                    System.exit(0);
                }
            });
        btnConsulta = new JButton("Consulta");
        btnConsulta.setBounds(new Rectangle(304, 130, 100, 30));
        this.getContentPane().add(btnConsulta, null);
        btnConsulta.addActionListener (new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    // Chamada a um método

                }
            });

        this.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    aoFechar();
                }
            });
        this.setVisible(true); 
    }

    private void aoFechar() {
        System.exit(0);
    }

    // Insira aqui os métodos para os eventos

    public static void main(String args[]) {
        //new CadastroUsuario();
        try
        {                  
            CadastroUsuario f1 = new CadastroUsuario();
            //1 - Driver para a utilização da API JDBC"
            String drv = "sun.jdbc.odbc.JdbcOdbcDriver";

            //2- ODBC criado
            String url = "jdbc:odbc:PROJETO";
            //3- Definindo a conexão
            Connection con;
            Class.forName(drv);
            con = DriverManager.getConnection(url,"",""); 

            //4-Criar o comando para execução de Query
            Statement SQL_Comando;
            SQL_Comando = con.createStatement();

            // String nome,sobrenome,email,usuario,senha;
            //nome = f1.txtNome;
            f1.CadastroUsuario();
            //sobrenome = f1.txtSobr();
            //email = f1.txtEmail();
            //usuario = f1.txtUsuario();
            //senha = f1.pssSenha();

            //nome =    JOptionPane.showInputDialog(null,"Nome da Transportadora ");
            //String fone =    JOptionPane.showInputDialog(null,"Fone da Transportadora ");
            String cmd  =    "Insert into usuarios (nome,sobrenome,email,usuario,senha) values ('"+f1.txtNome+"','"+f1.txtSobr+"','"+f1.txtEmail+"','"+f1.txtUsuario+"''"+f1.pssSenha+"')";

            int valor = SQL_Comando.executeUpdate(cmd);
            if (valor > 0)
                JOptionPane.showMessageDialog(null,"Registro incluído com Sucesso","Mensagem",2);
            else
                JOptionPane.showMessageDialog(null,"ERRO","Mensagem",2);  

            ResultSet rs = SQL_Comando.executeQuery("Select nome,sobrenome,email,usuario from usuarios order by 2") ;
            while(rs.next())
            {
                JOptionPane.showMessageDialog(null,"Nome: "+rs.getString("Nome")+rs.getString("Sobrenome")+"\n"+"Email: "+rs.getString("Email")+"\n"+"Usuario: "+rs.getString("Usuario"),"Alert",1);
            } 
            con.close();   
        }    
        catch(SQLException er2)
        {
            System.out.println(er2.getMessage());
        }
        catch(Exception erro)
        {
            System.exit(0);  
        }  
        //"Usuario ID: "+rs.getString("usuario_id")+"\n"+usuario_id
    }
}

O que tem de errado agora??

4 Respostas

romarcio

O modelo mais usado é criar um DAO(dataAccessObject), para eventos com o banco de dados. Dai pode fazer assim:
Cria uma classe de conexão

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
	
	public Connection getConnection() {
		System.out.println("Conectando ao Banco de Dados");
		Connection result = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			result = DriverManager.getConnection("jdbc:mysql://localhost/myDB", "root", "");
			return result;                        
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
		return result;
	}
	
}

E o DAO, faz assim:

import java.sql.ResultSet;
import java.sql.SQLException;

public class UsuarioDAO {

	private Connection connection;

	public UsuarioDAO(Connection connection) {
		this.connection = connection;
	}

	public UsuarioDAO() {
		this.connection = new ConnectionFactory().getConnection();
	}

	public boolean validaUsuario(Usuario usuario) {
		boolean result = false;
		String sql = "select * from usuarios where login like ? and senha like ?";
		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setString(1, usuario.getLogin());
			stmt.setString(2, usuario.getSenha());

			ResultSet rs = stmt.executeQuery();
			while (rs.next()) {
				if (rs.getString("login").equals(usuario.getLogin()) && rs.getString("senha").equals(usuario.getSenha())) {
					result = true;
				}
			}

			System.out.println(usuario.getLogin() + " - " + usuario.getSenha());

			rs.close();
			stmt.close();
		} catch (SQLException e) {
			throw new DAOException();
		}
		return result;
	}

}

Dentro do DAO vc cria todos os métodos de pesquisa, insert, delete, update. Dai vc chama esses métodos onde precisar deles na sua regra de negócio.

new UsuarioDAO().validaUsuario(usuario);
ursodamongolia

Não entendi … mais tem alguma coisaq eu possa fazer nesse codigo q dê certo??

drsmachado

Bom, não entendi o que realmente você precisa.
Quando se está aprendendo a programar, é comum colocar tudo dentro de uma mesma classe, mas, é extremamente necessário que se faça a separação de cada uma das partes.
1 - É possível reutilizar boa parte, senão tudo, que está codificado na parte de swing.
2 - É preciso que você crie classes separadas, como a de conexão e a DAO.
3 - Fazendo isto, implemente o método de consulta primeiro, assim fica mais fácil identificar possíveis erros, esteja atento à eventuais exceptions, linhas podem ser apontadas e a análise dos erros é que permite a correção.
4 - Pense OO. Objetos interagem. É possível o objeto ser humano beber água direto do objeto torneira, mas utilizando um objeto copo fica mais fácil, embora dê mais trabalho.

ursodamongolia

Então eu entendi como ehh , mais não sei como fazer…

Criado 7 de novembro de 2010
Ultima resposta 14 de nov. de 2010
Respostas 4
Participantes 3