SQLiteOpenHelper에서 Update, Delete가 됐다 안됐다 합니다. 원인을 모르겠습니다.


package com.android.demo.notepad1;

import android.app.Activity;
import android.database.Cursor;
import android.database.SQLException;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class NotePadTest extends Activity {
    /** Called when the activity is first created. */
private NotesDbAdapter dbAdapter;
private TextView tv1, tv2;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        dbAdapter = new NotesDbAdapter(this);
        dbAdapter.open();
        
        tv1 = (TextView) findViewById(R.id.title_textview);
        tv2 = (TextView) findViewById(R.id.body_textview);
        
        Button createButton = (Button)findViewById(R.id.create_button);
        createButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dbAdapter.createTable();
}
});
        
        Button dropButton = (Button)findViewById(R.id.drop_button);
        dropButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
dbAdapter.dropTable();
showToast("테이블 삭제 완료");
}
catch(SQLException e)
{
showToast("테이블 삭제 오류");
}
}
});
        
        Button insertButton = (Button)findViewById(R.id.insert_button);
        insertButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dbAdapter.createNote("text", "body");
}
});
        Button selectButton = (Button) findViewById(R.id.select_button);
        selectButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv1.setText("");
tv2.setText("");
Cursor cursor = dbAdapter.fetchAllNotes();
cursor.moveToFirst();
while(!cursor.isAfterLast())
{
String text = cursor.getString(1);
String body = cursor.getString(2);
tv1.append(text);
tv2.append(body);
cursor.moveToNext();
}
cursor.close();
}
});
        
        Button updateButton = (Button)findViewById(R.id.update_button);
        updateButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv1.setText("");
tv2.setText("");
Cursor cursor = dbAdapter.fetchAllNotes();
cursor.moveToFirst();
dbAdapter.updateNote(cursor.getCount() - 1, "xx", "yy");
while(!cursor.isAfterLast())
{
String text = cursor.getString(1);
String body = cursor.getString(2);
tv1.append(text);
tv2.append(body);
cursor.moveToNext();
}
cursor.close();
}
});
        
        Button deleteButton = (Button)findViewById(R.id.delete_button);
        deleteButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv1.setText("");
tv2.setText("");
Cursor cursor = dbAdapter.fetchAllNotes();
cursor.moveToFirst();
boolean result = dbAdapter.deleteNote(cursor.getCount() - 1);
Log.i("delete work : ", result == true ? "succeed" : "fail");
Log.i("cursor count : ", new Integer(cursor.getCount()).toString());
while(!cursor.isAfterLast())
{
String text = cursor.getString(1);
String body = cursor.getString(2);
tv1.append(text);
tv2.append(body);
cursor.moveToNext();
}
cursor.close();
}
});
    }
    
    private void showToast(String msg) {
     Toast.makeText(this, msg, Toast.LENGTH_LONG);
    }
}

로그캣으로 보면 Succeed가 될때는 Fail했던 Index를 제외하고 신규 RowID의 데이터만 삭제가 됩니다.
AutoIncrement가 이상한 것인지 전혀 원인을 모르겠습니다.
이상하게도 Delete가 작동되는 확률이 반반입니다.

조언 좀 해주세요. 위 예제 코드로 저만 그런건지도 좀 알고 싶습니다.
풀소스(프로젝트)는 첨부파일에 있습니다. 시간되시면 한 번 받아서 돌려봐주시고 답변 좀 부탁드립니다.