Caros colegas, estou com dúvida em relação a conexão com o banco de dados. Estou utilizando o firebird 2.5.
Inicialmente criei uma "Fábrica de Conexões" conforme código abaixo:public class FabricaConexao {
private static final String driver = "org.firebirdsql.jdbc.FBDriver";
private static final String url = "jdbc:firebirdsql:localhost/3050:C:/bd/PADRAOMVC.FDB";
private static final String user = "SYSDBA";
private static final String login = "masterkey";
private static Connection objconexao = null;
public FabricaConexao(){
try{
Class.forName(driver);
objconexao = DriverManager.getConnection(url, user, login);
}
catch(ClassNotFoundException d){
JOptionPane.showMessageDialog(null, "Driver para conexão ao Banco de Dados não localizado!\n" + d);
}
catch(SQLException b){
JOptionPane.showMessageDialog(null, "Banco de Dados não localizado!\n" + b);
}
}
public static Connection getConexao(){
if(objconexao == null)
new FabricaConexao();
return objconexao;
}
}
public class CidadeDao {
public CidadeDao(){}
public void Salvar(CidadeModel dados){
Connection con = FabricaConexao.getConexao();
PreparedStatement inserirSql = null;
String sql = "insert into cidade(codigo,nome,cep,uf) values(?,?,?,?)";
try{
inserirSql = con.prepareStatement(sql);
inserirSql.setString(1, dados.getCodigo());
inserirSql.setString(2, dados.getNome());
inserirSql.setString(3, dados.getCep());
inserirSql.setString(4, dados.getUf());
inserirSql.executeUpdate();
inserirSql.close();
//con.close();
}
catch(SQLException e){
JOptionPane.showMessageDialog(null, "Falha na inserção de dados!\n"+e.getMessage());
}
}
}
No método Salvar() acima se descomentar a linha onde fecho a conexão só é possível salvar um registro e o programa precisa ser fechado para que consiga salvar um novo registro. Mas, se deixar comentado consigo salvar quantos registros forem necessários. E eles estão sendo armazenados de fato no banco de dados.
Já vi outros códigos onde a conexão é aberta e fechada em cada método. Estou cometendo algum erro nesse código?