디비에서 삭제 기능 구현중인데
삭제 누르면
public void delete(int position) {
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM LOGIN WHERE _ID=1;");
db.close();
}
SQLiteDatabase db = getWritableDatabase();
여기서 에러가 납니다.
java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory)' on a null object reference
이 에러가 발생하는데요 어떤걸 해줘야 하나요?
데이터추가 , 셀렉은 잘 동작하고 있습니다.
http://www.masterqna.com/android/69235/%EC%99%B8%EB%B6%80%ED%81%B4%EB%9E%98%EC%8A%A4%EC%97%90%EC%84%9C-sqlite-%EB%94%94%EB%B9%84-%EC%83%9D%EC%84%B1-%EC%97%90%EB%9F%AC%EC%A7%88%EB%AC%B8
위 글답변대로 해봐도 동일한 에러가 납니다.
DBHelper 코드입니다.
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import static android.content.ContentValues.TAG;
public class DBHelper extends SQLiteOpenHelper {
private Context context;
private DBHelper dbHelper;
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
this.context = context;
}
@Override public void onCreate(SQLiteDatabase db) {
try {
String DROP_SQL = "drop table if exists LOGIN";
db.execSQL(DROP_SQL);
} catch(Exception ex) {
Log.e(TAG, "Exception in DROP_SQL", ex);
}
StringBuffer sb = new StringBuffer();
sb.append(" CREATE TABLE LOGIN ( ");
sb.append(" _ID INTEGER PRIMARY KEY AUTOINCREMENT, ");
sb.append(" ID TEXT, ");
sb.append(" PW TEXT ) ");
try {
db.execSQL(sb.toString());
} catch(Exception ex) {
Log.e(TAG, "Exception in CREATE_SQL", ex);
}
Toast.makeText(context, R.string.make, Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Toast.makeText(context, R.string.upgrade, Toast.LENGTH_SHORT).show();
}
public void addLogin(Login login) {
SQLiteDatabase db = getWritableDatabase();
StringBuffer sb = new StringBuffer();
sb.append(" INSERT INTO LOGIN ( ");
sb.append(" ID, PW ) ");
sb.append(" VALUES ( ?, ? ) ");
if(login.getId().equals("") || login.getPw().equals("")){
Toast.makeText(context, R.string.nodata, Toast.LENGTH_SHORT).show();
}else{
db.execSQL(sb.toString(),
new Object[]{
login.getId(),
login.getPw(),
});;
Toast.makeText(context, R.string.insert, Toast.LENGTH_SHORT).show();
}
}
public void delete(int position) {
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM LOGIN WHERE _ID=1;");
db.close();
}
public List getAllData() {
StringBuffer sb = new StringBuffer();
sb.append(" SELECT _ID, ID, PW FROM LOGIN ");
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery(sb.toString(), null);
List list = new ArrayList();
Login login = null;
while (cursor.moveToNext()) {
login = new Login();
login.set_id(cursor.getInt(0));
login.setId(cursor.getString(1));
login.setPw(cursor.getString(2));
list.add(login);
}
return list;
}
}