Fala galeraaa, tudo tranquilo?
Amigos, tenho um problema que não me entra na cabeça.
Eu estou desenvolvendo um sistema com o bando de dados Db4o.
E eu tenho uma tela de cadastro de usuários, feita com swing.
O problema é o seguinte:
Quanto tento fazer um “store” do objeto, ele diz que o banco de dados está fechado.
com.db4o.ext.DatabaseClosedException
O problema é que não consigo entender onde porque ele pega o banco fechado.
O trecho de código que ele tá tentando executar é esse, exatamente na hora de salvar um novo dado.
[code]
if (editando) {
UsuarioDAO dao = new UsuarioDAO();
UsuarioVO exemplo = new UsuarioVO(Integer.valueOf(editID.getText()));
UsuarioVO novo = new UsuarioVO();
novo.setNome(editNome.getText());
novo.setEmail(editEmail.getText());
novo.setUsuario(editUsuario.getText());
novo.setSenha(editSenha.getText());
dao.update(exemplo, novo);
} else {
UsuarioDAO dao = new UsuarioDAO();
UsuarioVO usuario = new UsuarioVO(dao.getLast() + 1);
usuario.setNome(editNome.getText());
usuario.setEmail(editEmail.getText());
usuario.setUsuario(editUsuario.getText());
usuario.setSenha(editSenha.getText());
dao.insert(usuario);
}[/code]
O meu problema está dando no else, desse if aí!
Quando clico em novo, e deixa false o boolean editando, e quando eu clico em editar,
ele deixa true.
Dentro do else, ele tá dando problema na linha 14, desse código aí, específicamente em:
dao.getLast() + 1
O meu DAO está assim:
[code]package br.com.andrey.usuario;
import com.db4o.Db4oEmbedded;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import java.util.ArrayList;
import java.util.List;
/**
*
-
@author Andrey
*/
public class UsuarioDAO {ObjectContainer db = Db4oEmbedded.openFile(
Db4oEmbedded.newConfiguration(), “C:/Sistema/dados/usuarios.odb”);public List getAll() {
List lista = new ArrayList();
try {
ObjectSet resultado = db.queryByExample(UsuarioVO.class);
for (Object o : resultado) {
lista.add((UsuarioVO) o);
}
} catch (Exception e) {
System.err.println(e);
} finally {
db.close();
}
return lista;
}public UsuarioVO getById(int id) {
UsuarioVO usuario = null;
try {
UsuarioVO exemplo = new UsuarioVO(id);
usuario = (UsuarioVO) db.queryByExample(exemplo).next();
} catch (Exception e) {
System.err.println(e);
} finally {
db.close();
}
return usuario;
}public int getLast() {
int i = 0;
int last = 0;while (i < getAll().size()) { if (last < getAll().get(i).getId()) { last = getAll().get(i).getId(); } i++; } return last;
}
public void insert(UsuarioVO usuario) {
try {
db.store(usuario);
} catch (Exception e) {
System.err.println(e);
} finally {
db.close();
}
}public void update(UsuarioVO exemplo, UsuarioVO novo) {
try {
UsuarioVO achado = (UsuarioVO) db.queryByExample(exemplo).next();
achado.setNome(novo.getNome());
achado.setEmail(novo.getEmail());
achado.setUsuario(novo.getUsuario());
achado.setSenha(novo.getSenha());
db.store(achado);
} catch (Exception e) {
System.err.println(e);
} finally {
db.close();
}
}public void delete(UsuarioVO exemplo) {
try {
db.delete(exemplo);
} catch (Exception e) {
System.err.println(e);
} finally {
db.close();
}
}
}[/code]
Galera, se puderem me ajudar, agradeço!
Enquanto isso, vou me virando aqui.
Desde já meu obrigado.