我在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()方法不会创建另一个新对象,同时保持旧条目不变,对吗?
答案 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 {...
这两个都是表中字段的名称。