【问题标题】:Insert Multiple Rows realm android插入多行领域android
【发布时间】:2017-04-12 23:10:48
【问题描述】:

您好,我一直在尝试使用 arraylists 中的值将多行插入到我的领域数据库中,每当我尝试通过 for 循环插入时,它只会添加最后一个,如果您需要其他内容(代码、xml)请告诉我

这是我的代码:

 realm.executeTransactionAsync(new Realm.Transaction() { //ASYNCHRONOUS TRANSACCION TO EXECUTE THE QUERY ON A DIFFERENT THREAD
                        @Override
                        public void execute(Realm bgRealm) {
                            // increment index
                            Invoices inv = bgRealm.createObject(Invoices.class, RealmController.autoincrement(bgRealm, Invoices.class)); //METHOD THAT GIVES US THE AUTONINCREMENTE FUNCTION
                            //inv.id = nextId;                                                                                           //THE 2ND PARAMETER IN CREATE OBJECTE DEFINES THE PK
                            //...
                            //realm.insertOrUpdate(user); // using insert API


                            inv.number = n;
                            inv.serial = s;
                            inv.client = c;
                            inv.subtotal = sub;
                            inv.tax = tax;
                            inv.total = tot;

                            Invoice_lines invl = bgRealm.createObject(Invoice_lines.class, RealmController.autoincrement(bgRealm, Invoice_lines.class));//ID FROM ANOHTER TABLE (ROW)

                            for(int i=0; i<price.size(); i++) {
                                invl.description = description.get(i);
                                invl.price = price.get(i);
                                invl.quantity = quantity.get(i);
                                invl.invoice = inv;
                                bgRealm.insert(invl);
                            }

                        }
                    }

【问题讨论】:

    标签: java android database realm


    【解决方案1】:

    我不确定。您在这一行中只创建了一个领域对象:

    Invoice_lines invl = bgRealm.createObject(Invoice_lines.class, RealmController.autoincrement(bgRealm, Invoice_lines.class));//ID FROM ANOHTER TABLE (ROW)
    

    并且在循环中您更改 invl 字段,但不要插入新对象。

    尝试在循环内创建对象。

    【讨论】:

    • 你是对的,我最终在循环内创建了对象
    【解决方案2】:

    因为你想做的是

                Invoice_lines invl = new Invoice_lines(); // unmanaged object
                for(int i = 0; i < price.size(); i++) {
                    inv1.setId(RealmController.autoincrement(bgRealm, Invoice_lines.class));//ID FROM ANOHTER TABLE (ROW)
                    invl.description = description.get(i);
                    invl.price = price.get(i);
                    invl.quantity = quantity.get(i);
                    invl.invoice = inv;
                    bgRealm.insert(invl);
                }
    

    【讨论】:

    • 这个也是。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    相关资源
    最近更新 更多