DB4O插入不存在的酒厂

时间:2014-04-14 11:59:36

标签: database insert db4o

我正在使用DB4O进行测试。我正在尝试插入数据。 我遇到的问题是:

当我插入酒厂名称和D.O.只有在数据库中不存在时才必须插入。

我怎么能这样做?

这是我的插入代码:

Scanner teclado=new Scanner(System.in);

        try{

        ObjectContainer db= Db4oEmbedded.openFile("DB4O.yap");
        System.out.print("Name of Wine: ");
        String nomVino = teclado.next();
        System.out.print("Name of Cellar: ");
        String nomBodega = teclado.next();
        System.out.print("D.O: ");
        String DO = teclado.next();

        System.out.print("Type of Wine: ");
        String tipoVino = teclado.next();
        System.out.print("Grad: ");
        float gradosAlch = teclado.nextFloat();
        System.out.print("Year of wine: ");
        int fecha = teclado.nextInt();

        teclado.close();

            Vinos v = new Vinos(nomVino,new Bodega(nomBodega,DO),tipoVino,gradosAlch,fecha);
            db.store(v); //guardar objetos
            db.commit(); // valida los datos
            //odb.rollback(); // deshace los datos
            System.out.print("Vino Introducido\n");
            db.close(); //cerrar la bd  
        }

     catch(Exception e){System.out.println (e);}

    }

提前谢谢!

1 个答案:

答案 0 :(得分:1)

你的问题究竟是什么(你的问题不明确)?

是否要避免重复Bodega()对象,即,当您存储新的Vinos对象时,如果存在 bodegaName änd,则不希望存储另一个Bodega()对象DO

如果这是您要完成的任务,则需要先搜索数据库中的Bodega对象,然后再将其与Vinos对象一起使用;类似的东西:

Scanner teclado=new Scanner(System.in);

try{
    ObjectContainer db= Db4oEmbedded.openFile("DB4O.yap");
    System.out.print("Name of Wine: ");
    String nomVino = teclado.next();
    System.out.print("Name of Cellar: ");
    String nomBodega = teclado.next();
    System.out.print("D.O: ");
    String DO = teclado.next();

    System.out.print("Type of Wine: ");
    String tipoVino = teclado.next();
    System.out.print("Grad: ");
    float gradosAlch = teclado.nextFloat();
    System.out.print("Year of wine: ");
    int fecha = teclado.nextInt();

    teclado.close();

    ObjectSet<Bodega> foundBodegas = db.query(new Predicate<Bodega>() {
                                        @Override public  boolean match(Bodega candidate) {
                                             return candidate.getName().equals(nomeBodega);
                                        }});

    Bodega bodega = null;

    if (foundBodegas.size() == 1) {
        bodega = foundBodegas.next();
    }
    else {
        bodega = new Bodega(nomBodega, DO);
    }

    Vinos v = new Vinos(nomVino,  bodega  ,tipoVino,gradosAlch,fecha);

    db.store(v); //guardar objetos
    db.commit(); // valida los datos
    //odb.rollback(); // deshace los datos
    System.out.print("Vino Introducido\n");
    db.close(); //cerrar la bd  
}
catch(Exception e)
{
    System.out.println (e);
}

您可以找到更多信息herehere