Jump to content
Sign in to follow this  
faria

DB4O -problema na procura

Recommended Posts

faria

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

Share this post


Link to post
Share on other sites
Knitter

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.

Share this post


Link to post
Share on other sites
faria

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.

Share this post


Link to post
Share on other sites
faria

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

Share this post


Link to post
Share on other sites
Knitter

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.