Gravar dados no firebird

2 respostas
R
Galera estou trocando de banco de dados antes usava o access e agora estou mudando para o firebird, só que tem um probleminha quando vou gravar dados da um error, o codigo de gravação é o mesmo que fazemos quando o access? tipo este codigo aí é quando era o access, muda algo para o firebird?
try{
    String sqlinsert = "insert into tb_fornecedor(fornecedor, cep, endereco, email, fixo, celular)values('"+
            tf_fornecedor.getText()+"','"+
            tf_cep.getText()+"','"+
            tf_end.getText()+"','"+
            tf_email.getText()+"','"+
            tf_fixo.getText()+"','"+            
            tf_celular.getText()+"')";
    con_fornecedores.statement.executeUpdate(sqlinsert);
    JOptionPane.showMessageDialog(null,"Gravado com Sucesso!");
    
   con_fornecedores.executeSQL("select * from tb_fornecedor");
   con_fornecedores.resultset.first();
   mostrar_dados();
        }
   catch(SQLException erro)
   {
       JOptionPane.showMessageDialog(null,"Error ao tentar gravar dados..."+erro);
   }

2 Respostas

W

Bom, refatorando um pouco o seu exemplo, e usando o conceito de Fabrica de conexões e Repositório, para persistimos por exemplo um fornecedor poderíamos ter:

  1. classe para o modelo/entidade Fornecedor;
package com.togoworks.study;

public class Fornecedor {
	private String nome;
	private String cep;
	private String endereco;
	private String email;
	private String fixo;
	private String celular;

	//GETTERS E SETTERS
        //método toString sobreescrito ....
}
  1. classe ConnectionFactory;
package com.togoworks.database;

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

public class ConnectionFactory {
	public static Connection createFirebirdConnection() {
		try {
			Connection connection = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:d:/Database/guj.fbd","SYSDBA","masterkey");
			return connection;
		} catch (SQLException e) {
			throw new RuntimeException("Erro ao realizar connection: " + e);
		}
	}
}
  1. classe FornecedorRepository;
package com.togoworks.study;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class FornecedorRepository {
	private Connection connection;
	
	//a responsabilidade de fechar a connection é de quem esta provendo a mesma
	public FornecedorRepository(Connection connection) {
		this.connection = connection;
	}
	
	public void save(Fornecedor fornecedor) {
		try {
			String sql = "insert into tb_fornecedor(fornecedor, cep, endereco, email, fixo, celular) values (?, ?, ?, ?, ?, ?)";
			
			PreparedStatement preparedStatement = connection.prepareStatement(sql);
			
			preparedStatement.setString(1, fornecedor.getNome());
			preparedStatement.setString(2, fornecedor.getCep());
			preparedStatement.setString(3, fornecedor.getEndereco());
			preparedStatement.setString(4, fornecedor.getEmail());
			preparedStatement.setString(5, fornecedor.getFixo());
			preparedStatement.setString(6, fornecedor.getCelular());
			
			preparedStatement.execute();
			
			//Como eu abri eu fecho!
			preparedStatement.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public List<Fornecedor> findAll() {
		List<Fornecedor> fornecedores = new ArrayList<Fornecedor>();
		
		try {
			Statement statement = connection.createStatement();
			ResultSet resultSet = statement.executeQuery("select * from tb_fornecedor");
			    
		    while(resultSet.next()) {
		    	//instanciamos e mapeamos um fornecedor 
		    	Fornecedor fornecedor = new Fornecedor();
				fornecedor.setNome(resultSet.getString("fornecedor"));
				fornecedor.setCep(resultSet.getString("cep"));
				fornecedor.setEndereco(resultSet.getString("endereco"));
				fornecedor.setEmail(resultSet.getString("email"));
				fornecedor.setFixo(resultSet.getString("fixo"));
				fornecedor.setCelular(resultSet.getString("celular"));
				
				//adicionamos o fornecedor a lista de forncedores que será retornada
				fornecedores.add(fornecedor);
		    }
		    
		    //Como eu abri eu fecho!
		    resultSet.close();
		    statement.close();
		    
		    //retornamos a lista de fornedores
			return fornecedores;
			
		} catch (SQLException e) {
			e.printStackTrace();
			
			//Caso ocorra algum erro prefiro retornar uma lista vazia
			return new ArrayList<Fornecedor>(0);
		} 
	}
}
  1. uma classe para testar as implementações.
package com.togoworks.study;


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

import com.togoworks.database.ConnectionFactory;

public class TesteFornecedorRepositoryFirebird {
	public static void main(String[] args) {
		
		Fornecedor fornecedor = new Fornecedor();
		fornecedor.setNome("Aldo Auto Peças");
		fornecedor.setCep("13460-000");
		fornecedor.setEndereco("Rua das Ladeiras, 123");
		fornecedor.setEmail("[email removido]");
		fornecedor.setFixo("([telefone removido]");
		fornecedor.setCelular("([telefone removido]");

		try {
			Connection connection = ConnectionFactory.createFirebirdConnection();
			FornecedorRepository repository = new FornecedorRepository(connection);
			
			//Persiste um fornecedor usando o repositório
			repository.save(fornecedor);
			
			//Lista os fornecedores usando o repositório
			//Necessário implementar toString em Fornecedor
			System.out.println(repository.findAll());
			connection.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

Links uteis para ler e baixar o firebird.

Firebird:

  1. http://www.firebirdsql.org/en/firebird-2-1/

FlameRobin:
2) http://www.flamerobin.org/

Driver JDBC - Jaybird
3) http://www.firebirdsql.org/en/jdbc-driver/

Espero ter ajudado, fique a vontade para criticas e sugestões.

C

Na verdade não se faz cadastro assim, mas sim por prepare statement.

import factory.ConnectionFactory;
import modelo.Usuario;
import java.sql.*;
import java.sql.PreparedStatement;

public class UsuarioDAO {

    private Connection connection;



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

    public void adiciona(Usuario usuario){

            String sql = "INSERT INTO usuario(nome,cpf,email,telefone) VALUES(?,?,?,?)";

            try {
                PreparedStatement stmt = connection.prepareStatement(sql);

                stmt.setString(1, usuario.getNome());
                stmt.setString(2, usuario.getCpf());
                stmt.setString(3, usuario.getEmail());
                stmt.setString(4, usuario.getTelefone());

                 stmt.execute();
                stmt.close();

            } catch (SQLException u) {
                throw new RuntimeException(u);
        }
    }
  
}
Criado 29 de outubro de 2012
Ultima resposta 30 de out. de 2012
Respostas 2
Participantes 3