Android中的糖ORM:在SQLite中更新已保存的对象

时间:2014-11-10 02:21:35

标签: android sqlite orm crud

我在Android上使用SQLite和Sugar ORM进行应用程序开发的新手,并尝试阅读Sugar ORM文档,但没有找到任何有关如何在SQLite中更新已保存对象的内容。我可以在更改其属性后保存对象吗?类似的东西:

Customer myCustomer = (Customer.find(Customer.class, "id = ?", id)).get(0);
myCustomer.setName("new name");
myCustomer.setAddress("new Address");
myCustomer.save(); // is this okay for updating the object?

save()方法不会创建另一个新对象,同时保持旧条目不变,对吗?

4 个答案:

答案 0 :(得分:5)

您的代码应该毫无问题地更新行。

From the docs - Update Entity

<tabela ng-repeat="tab in tabelas"  name="{{tab.name}}" tabela="{{tab.tabela}}" campos="tab.campos"  class="tabela ui-widget-content></tabela>

答案 1 :(得分:3)

它会更新您的实体。 Sugar ORM覆盖现有的例如Name,并在save()方法调用后用“new name”更新它。

答案 2 :(得分:0)

更新已保存的对象非常简单。

检索对象;

Object object= Object.findById(Object.class, ID);

设置您需要的属性;

object.setAttr("new value");

然后最后调用save;

object.save();

或者,正如上面提到的那样,可以选择使用update(),它的工作方式略有不同,理想情况下在更改多个属性时使用;

首先创建对象并设置必要的属性;

Object object= new Object();
object.setAttr("some data");

然后在数据库中为理想情况下已存在的对象设置ID,以便将该项目作为替换对象;

object.setID(ID);

最后;

object.update();

答案 3 :(得分:0)

Save和Object方法完全不同,两者都非常有用。 如果您有对象并且说:

Object.save();

这也将覆盖所有其他字段,例如:

column1       column2
1             1

如果在对象中仅将column1对应字段设置为2之类的数字,则会得到:

Object.save();

column1       column2
2             NULL

Object.update();

column1       column2
2             1

您不需要显式使用.setId()来进行更新,它会查找一个唯一的项目(如果找到该项目将对其进行更新),否则将创建一个新行。默认情况下,自动增量ID列为添加到每个表中,并用作更新的唯一ID。如果您需要自己的字段具有唯一性,请使用:

@Unique
String MyID

或者对于多个相同的事物,您可以使用:

@MultiUnique("MyFirstID,MySecondID")
public class MyClass extends SugarRecord {...

这两个都是表中字段的名称。