先看看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;
}
MainActivity.java中两个按钮,一个增加对象,一个删除对象
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字段。