先看看Bean的定义:
package com.example.bean; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; @DatabaseTable(tableName = "user") public class UserBean { @DatabaseField(generatedId=true) public int id; @DatabaseField(columnName = "name") public String name; @DatabaseField(columnName = "age") public int age; }
package com.example.xman; import java.util.List; import com.example.bean.UserBean; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { Button btnQuery; Button btnDel; UserBeanDao userBeanDao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnQuery = (Button) findViewById(R.id.btn_query); btnDel = (Button) findViewById(R.id.btn_del); userBeanDao = new UserBeanDao(this); UserBean jack = new UserBean(); jack.name = "jack"; jack.age = 34; userBeanDao.save(jack); btnQuery.setOnClickListener(this); btnDel.setOnClickListener(this); } @Override public void onClick(View v) { if (v.getId() == R.id.btn_query) { // 查找对象 List<UserBean> userlist = userBeanDao.findAll(); for (UserBean userBean : userlist) { System.out.println(userBean.id + " " + userBean.age + userBean.name); } } else if (v.getId() == R.id.btn_del) { // 删除对象 UserBean jack = new UserBean(); jack.name = "jack"; jack.age = 34; userBeanDao.delete(jack); } } }情形:这里想将新增加的那个对象删除掉。当点击btn_del之后,然后点击btn_query,logcat中并没有删除刚刚的对象。
这是为什么呢?
其实这里看到UserBean的定义,里面有一个id字段。删除的时候,是需要设置这个字段。
else if (v.getId() == R.id.btn_del) { // 删除对象 UserBean jack = new UserBean(); jack.name = "jack"; jack.age = 34; userBeanDao.delete(jack); }这段代码中的UserBean对象其实是,jack.name为jack,jack.id为0,jack.age为34。而程序启动添加到数据库中的对象是jack.name为jack,jack.id为1,jack.age为34.
所以也就没有删除成功。正确的写法应该是:
else if (v.getId() == R.id.btn_del) { // 删除对象 UserBean jack = new UserBean(); jack.name = "jack"; jack.age = 34;
<span style="white-space:pre"> </span>jack.id = 1; userBeanDao.delete(jack); }
(2)当将UserBean的定义改成如下,去掉id字段。
package com.example.bean; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; @DatabaseTable(tableName = "user") public class UserBean { @DatabaseField(columnName = "name") public String name; @DatabaseField(columnName = "age") public int age; }然后进行删除,发现报错了。原因提示缺少id字段。
查看源码,Ormlite执行delete,需要id字段的。所以在定义bean的时候别省去id字段。