• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

faria

DB4O -problema na procura

5 mensagens neste tópico

olá comunicade, estou com um problema num progrma que estou a  tentar desenvolver.

Estou a usar DB4O como minha base de dados. O kse passa é o seguinte, quando inicio o programa, e insiro um novo elemento  e depois vou listar  funciona, mas caso inicie o programa e faço logo uma listagem  dá   erro na seguinte linha

IObjectSet result = basedados.Get(f);      //mensagem de erro -  "Object reference not set to an instance of an object."

o metoto inserir:

public void inserirsepultura(int numer, int canteir, int pis, string tip, string estad, ClassProprietario p,Bitmap img)//string dd,
        {
            ClassSepultura sep = new ClassSepultura(numer, canteir, pis, tip, estad, p, img);//dd,
            
            using (IObjectContainer db = Db4oFactory.OpenFile("semiterio.db4o"))
            {
                db.Set(sep);
                db.Commit();
                db.Close();
            }
        }

o metodo listar:

    public string ListarSep()
        {
            
            IObjectContainer basedados = Db4oFactory.OpenFile("semiterio.db4o");
            ClassSepultura f = new ClassSepultura();
            IObjectSet result = basedados.Get(f); //< Erro ocorre aqui
            string res = "";
            while (result.HasNext())
            {
                ClassSepultura forman = (ClassSepultura)result.Next();
                res = res + ("Número de Sepultura: " + forman.Nsepultura + "\n" + "Piso: " + forman.Npiso +
                "\n" + "Canteiro: " + forman.Ncanteiro+ "\n" + "Tipo de Sepultura: " + forman.Tiposep + "\n"
                + "Estado: " + forman.Estadosep  + "\n"  + "Proprietario: " + forman.Prop.NLeitor + "\n" + 
                "Nome: " + forman.Prop.Nrepresentante +"\n" + "Morada: " + forman.Prop.Mmorada + "\n" + 
                "Localidade: " + forman.Prop.Llocali + "\n" + "Contacto: " + forman.Prop.Ccontacto + "\n" +
                "\n"+ "- - - - - - - - - - - - - - - - - - - - - - - - - - - " + "\n" + "\n");
            }
            //+ "\n"+ "Data de Inserção: " + forman.Data.ToShortDateString()
            basedados.Close();
            return res;
        }

Obrigado a todos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Primeiro, peço desculpa por ter editado o texto mas tive de adicionar o sistema geshi ao teu código, algo que te esqueceste, e tive de retirar  o negrito e adicionar o comentário, dado que as tags de negritos não são reconhecidas dentro de código.

No que apresentaste não vejo nada de especial, isto é, aparentemente o código está correcto, uma coisa que falta é o tratamento de excepções para verificar se realmente o método OpenFile está a funcionar porque a excepção que te está a dar, parece indicar que a variável basedados não está iniciada correctamente.

Aplica os try-catch necessários para verificares se a base de dados está a ser criada correctamente e se, entre execuções, o ficheiro da base de dados não está a ser apagado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

olá, obrigado pela dica e por teres  editado o texto, eu sou novo nesta andança . Vou tentar por try- catch para ver se resolvo o problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

olá comunidade, olá Knitter,

Eu sou novato nestas andança e já olhei o código e não estou a conseguir resolver o problema.

Apliquei o try- catch mas "dentro" do catch não sei qual o código para apanhar determinados tipos de excepções para este caso especifico. Também não sei como fazer para ver se realmente o ficheiro da db esta a ser bem guardado.

agradeço a vossa ajuda.

abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes colocar um catch genérico que agarre todas as excepções, dentro do catch colocas código para te mostrar qual é a excepção, se é que alguma está a ser lançada.

Para veres se o ficheiro está a ser criado vai à pasta onde esperas que ele esteja e corre a aplicação :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora