Como eu faço para salvar?!

6 respostas
felipexavier

to tentando salvar alguns dados no banco de dados, mas não consigo de jeito nenhum, alguem pode me ajudar? até agora consegui isso:

package testedb;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


/**
 *
 * @author Felipe
 */
public class TesteDB {

  
 
    public static void main(String[] args) {
           String driver = "com.mysql.jdbc.Driver"; //Classe do driver JDBC
           String banco = "locadora"; //Nome do Banco criado
           String host = "localhost"; //Maquina onde está o banco
           String str_conn = "jdbc:mysql://" + host + ":3306/" + banco; //URL de conexão
           String usuario = "root"; //Usuário do banco
           String senha = "root"; //Senha de conexão
 
           try {
               Class.forName(driver); //Carrega o driver
 
               //Obtém a conexão com o banco
               Connection conn = DriverManager.getConnection(str_conn, usuario, senha);
 
               //Cria um statement para podermos mandar um SQL para o banco
               Statement stmt = conn.createStatement();
 
               //Mandamos o SQL para o banco e obtemos um ResultSet
               String sql = "SELECT * FROM usuarios";
               ResultSet rs = stmt.executeQuery(sql);
 
               //Percorrendo o ResultSet e obtendo os valores do banco
              while (rs.next()) {
                    System.out.println(rs.getString("id"));
                    System.out.println(rs.getString("nome"));
                    System.out.println(rs.getString("email"));
                    System.out.println(rs.getInt("idade"));
                    System.out.println("====================================");
             }
        }
        catch (ClassNotFoundException ex) {
             System.out.println("Não foi possível carregar o driver.");
        }
        catch (SQLException ex) {
             System.out.println("Problema com o SQL");
       }
    }
}// TODO code application logic here

já criei a conexão com o bd

TesteDB bd=new TesteDB();

Botão Salvar:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String texto="INSERT INTO usuarios(id,nome,email,idade) VALUES('"+jTextField1.getText()+"','"+jTextField2.getText()+"','"+jTextField3.getText()+"','"+jTextField4.getText()+"')"; // TODO add your handling code here: }

sei que não to salvando, mas queria saber como fazer isso, não to conseguindo com interface

6 Respostas

dieguittom

porque você está salvando os JTextField direto no banco?
Não é melhor criar um objeto Usuario. Você está deixando de usar um dos grandes recursos do java

victorsp

Não estou entendo ql o problema…

do tipo, cria um método salvar dentro do teste TestDB (Ex.: salvar(string query)) recebendo a query. Dentro do teu botão salvar tu chama o testeDB.salvar(texto) e chama também o commit pra concluir a transação e persistir os dados.

felipexavier
tem 1 classe com que faz a conexão:
package testedb;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


/**
 *
 * @author Felipe
 */
public class TesteDB {

  
 
    public static void main(String[] args) {
           String driver = "com.mysql.jdbc.Driver"; //Classe do driver JDBC
           String banco = "locadora"; //Nome do Banco criado
           String host = "localhost"; //Maquina onde está o banco
           String str_conn = "jdbc:mysql://" + host + ":3306/" + banco; //URL de conexão
           String usuario = "root"; //Usuário do banco
           String senha = "root"; //Senha de conexão
 
           try {
               Class.forName(driver); //Carrega o driver
 
               //Obtém a conexão com o banco
               Connection conn = DriverManager.getConnection(str_conn, usuario, senha);
 
               //Cria um statement para podermos mandar um SQL para o banco
               Statement stmt = conn.createStatement();
 
               //Mandamos o SQL para o banco e obtemos um ResultSet
               String sql = "SELECT * FROM usuarios";
               ResultSet rs = stmt.executeQuery(sql);
 
               //Percorrendo o ResultSet e obtendo os valores do banco
              while (rs.next()) {
                    System.out.println(rs.getString("id"));
                    System.out.println(rs.getString("nome"));
                    System.out.println(rs.getString("email"));
                    System.out.println(rs.getInt("idade"));
                    System.out.println("====================================");
             }
        }
        catch (ClassNotFoundException ex) {
             System.out.println("Não foi possível carregar o driver.");
        }
        catch (SQLException ex) {
             System.out.println("Problema com o SQL");
       }
    }
}// TODO code application logic here
e tem uma outra classe que ta com a interface:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Principal.java
 *
 * Created on 22/06/2011, 22:52:48
 */
package testedb;

/**
 *
 * @author Felipe
 */
public class Principal extends javax.swing.JFrame {

    
    TesteDB bd=new TesteDB();
    /** Creates new form Principal */
    public Principal() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jTextField1 = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jTextField3 = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        jTextField4 = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jTextField1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField1ActionPerformed(evt);
            }
        });

        jLabel1.setText("Cadastro nº:");

        jLabel2.setText("Nome:");

        jLabel3.setText("E-mail:");

        jLabel4.setText("Idade:");

        jButton1.setText("Salvar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(95, 95, 95))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addGap(124, 124, 124))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(107, 107, 107)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(jTextField4, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.LEADING))
                        .addGap(16, 16, 16))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 72, Short.MAX_VALUE)
                        .addGap(83, 83, 83))
                    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel3)
                    .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 155, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(68, 68, 68)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(33, 33, 33))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(58, 58, 58)
                        .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(33, 33, 33)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jLabel1)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jLabel4)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(23, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String texto="INSERT INTO usuarios(id,nome,email,idade) VALUES('"+jTextField1.getText()+"','"+jTextField2.getText()+"','"+jTextField3.getText()+"','"+jTextField4.getText()+"')";
              // TODO add your handling code here:
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Principal().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    // End of variables declaration
}

quero saber como salvar os itens no banco de dados! quem souber ou puder me ajudar *-*

W

Eu faria algumas modificacoes no seu codigo.

  1. A classe de conexao no banco:
import java.sql.*; 
  
/** 
* 
* @author Felipe 
*/  
public class DBConnectionManager {        
  
    public static Connection getConnection() throws SQLException {
	
        String driver = "com.mysql.jdbc.Driver"; //Classe do driver JDBC  
        String banco = "locadora"; //Nome do Banco criado  
        String host = "localhost"; //Maquina onde está o banco  
        String str_conn = "jdbc:mysql://" + host + ":3306/" + banco; //URL de conexão  
        String usuario = "root"; //Usuário do banco  
        String senha = "root"; //Senha de conexão  
		
		Connection conn = null;
  
        try {  
            Class.forName(driver); //Carrega o driver  
			
            //Obtém a conexão com o banco  
            conn = DriverManager.getConnection(str_conn, usuario, senha);    			
        }  	
		catch (ClassNotFoundException ex) {  
			System.out.println("Não foi possível carregar o driver.");  
		}  

		return conn;
    }  
}

Depois pra usar a sua classe eh soh fazer:

try {
	Connection con = DBConnectionManager.getConnection();
} catch (SQLException e) {
	System.out.println("Nao pode conectar");
}

no seu caso acho que vc quer adicionar quando vc clica no botao nao eh?

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {  
    try {
	Connection con = DBConnectionManager.getConnection();

        String texto="INSERT INTO usuarios(id,nome,email,idade) VALUES('"+jTextField1.getText()+"','"+jTextField2.getText()+"','"+jTextField3.getText()+"','"+jTextField4.getText()+"')";  
    

    } catch (SQLException e) {
        // tipo, mostra um dialog com a mensagem de erro, por exemplo.
    }
}

Do jeito que vc fez a classe de conexao a classe nao tem utilidade nenhuma, porque vc colocou todo o codigo dentro do metodo main. Fora isso vc ta executando selects no mesmo lugar, talvez nao seja mais adequado ter tudo no mesmo lugar.
Crie uma classe que soh vai gerenciar a conexao o resto vc faz em outras classes.

PS:
Outra coisa, o ideial seria vc tirar o SQL de dentro do seu codigo!!!

PS2:
Esse codigo gerado pelo Netbeans eh horrivel demais!!! Tentar mudar isso!!!

//Daniel

felipexavier

mesmo assim não to conseguindo salvar no banco de dados.
alguem pode me ajudar?!

so preciso saber o que colocar na classe de banco de dados e o que colocar no botão salvar, to ralando nisso >.<

W

felipexavier:
mesmo assim não to conseguindo salvar no banco de dados.
alguem pode me ajudar?!

so preciso saber o que colocar na classe de banco de dados e o que colocar no botão salvar, to ralando nisso >.<

Porque nao esta funcionando??? Da algum erro? Se sim, qual??

//Daniel

Criado 22 de junho de 2011
Ultima resposta 25 de jun. de 2011
Respostas 6
Participantes 4