데이터베이스에서 레코드 삭제를 시도하면 널 포인터 예외 오류가 표시됩니다. id
에 값이 걱정하지 마세요SQLite 삭제가 작동하지 않습니다.
ourDatabase.delete(DATABASE_TABLE[1], KEY_ID + " = " + id, null);
, 나는 이미 그것을 확인했습니다이 내 코드입니다! here
android.database.sqlite.SQLiteStatement.releaseAndUnlock (SQLiteStatement.java:290)
소스 코드를 사용할 수 :에서
public class DiaryDB {
// User info
public static final String KEY_NAME = "my_name";
public static final String KEY_PASSWORD = "my_password";
public static final String KEY_QUESTION_ID = "my_question";
public static final String KEY_ANSWER = "my_answer";
// Entry details
public static final String KEY_ID = "_id";
public static final String KEY_DATE = "entry_date";
public static final String KEY_TIME = "entry_time";
public static final String KEY_TITLE = "entry_title";
public static final String KEY_CONTENT = "_entry";
public static final String KEY_RATE = "entry_rating";
public static final String KEY_IMAGE = "entry_image";
private static final String DATABASE_NAME = "MyDiary";
private static final String[] DATABASE_TABLE = { "My_Details", "My_Entries" };
private static final int DATABASE_VERSION = 1;
private DbHelper ourHelper;
private final Context ourContext;
private SQLiteDatabase ourDatabase;
public DiaryDB(Context c) {
ourContext = c;
}
public DiaryDB open() throws SQLException {
ourHelper = new DbHelper(ourContext);
ourDatabase = ourHelper.getWritableDatabase();
return this;
}
public void close() {
ourHelper.close();
}
private static class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + DATABASE_TABLE[0] + " (" + KEY_NAME
+ " TEXT PRIMARY KEY NOT NULL, " + KEY_PASSWORD
+ " TEXT NOT NULL, " + KEY_QUESTION_ID + " TEXT NOT NULL, "
+ KEY_ANSWER + " TEXT NOT NULL);");
db.execSQL("CREATE TABLE " + DATABASE_TABLE[1] + " (" + KEY_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_DATE
+ " TEXT NOT NULL, " + KEY_TIME + " TEXT NOT NULL, "
+ KEY_TITLE + " TEXT NOT NULL, " + KEY_CONTENT
+ " TEXT NOT NULL, " + KEY_RATE + " REAL, " + KEY_IMAGE
+ " BLOB);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE[0]);
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE[1]);
onCreate(db);
}
}
public void deleteEntry(long id){
Log.e("Tester", "" + id);
ourDatabase.delete(DATABASE_TABLE[1], KEY_ID + " = " + id, null);
}
}
로그인 채팅 오류입니다.
쇼 전체 코드 ... DATABASE_TABLE 무엇인가가? KEY_ID? 신분증? 이 매개 변수 중 하나가 null입니다. – Suvitruf
관련 코드를 추가하십시오. LogCat을 그림이 아닌 WRITTEN 형식으로 추가하십시오. –
어쨌든 NullPointerException이 있음을 알 수 있습니다. –