OrmLiteオブジェクトを削除するときの注意
3196 ワード
まずBeanの定義を見てみましょう.
MainActivity.JAvaの2つのボタン、1つの追加オブジェクト、1つの削除オブジェクト
これはなぜですか.
実はここでUserBeanの定義を見て、中にidフィールドがあります.削除するときは、このフィールドを設定する必要があります.
だから削除に成功しませんでした.正しい書き方は次のとおりです.
(2)UserBeanの定義を以下のように変更するとidフィールドを削除する.
ソースコードを表示し、Ormliteはdeleteを実行し、idフィールドが必要です.だからbeanを定義するときはidフィールドを省かないでください.
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の2つのボタン、1つの追加オブジェクト、1つの削除オブジェクト
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です.名前はjack、jackです.idは0、jack.ageは34です.プログラム起動がデータベースに追加するオブジェクトはjackである.名前は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フィールドを省かないでください.