Java Android数据库返回空值
我得到的不是初始化 在我的活动中,我以[单击删除按钮时]的身份调用Java Android数据库返回空值,java,android,sqlite,Java,Android,Sqlite,我得到的不是初始化 在我的活动中,我以[单击删除按钮时]的身份调用 public class DBHelper extends SQLiteOpenHelper { private static final int DB_VERSION=1; private static final String DB_NAME="SAMPLE.db"; private static final String TABLE_NAME="events"; private stat
public class DBHelper extends SQLiteOpenHelper {
private static final int DB_VERSION=1;
private static final String DB_NAME="SAMPLE.db";
private static final String TABLE_NAME="events";
private static final String KEY_ID="sampleId";
private static final String KEY_TITLE="sampleTitle";
private static final String KEY_DATE="sampleDATE";
SQLiteDatabase dbEvents;
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS sampleTable(sampleID INTEGER PRIMARY KEY AUTOINCREMENT,sampleTitle TEXT,sampleDATE BIGINT,trash INTEGER DEFAULT 0) ");
this.dbEvents=db;
}
public Integer deleteItem(Integer itemId){
Log.d("CURSOR:","IM HERE"+eventId);
if(dbEvents == null){
Log.d("CURSOR:","IM NOT INTIALIZING");
}
return null;
}
我无法执行DB操作,因为它会引发空指针异常
当您使用DBHelper的实例调用
getWritableDataBase()
方法时,将调用onCreate
从方法getWritableDataBase()
的Javadocs中,使用扩展了SQLiteOpenHelper的类的实例
创建和/或打开用于读写的数据库。第一次调用它时,将打开数据库并调用onCreate、onUpgrade和/或onOpen
这意味着,这个代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dbHelper=new DBHelper(this);
}
public void deleteItem(int Id){
dbHelper=new DBHelper(this);
dbHelper.deleteEvent(Id);
}
不会让你走远的。因为通过调用getWritableDataBase
或getReadableDataBase
创建将返回用于执行SQLite操作的SQLiteDatabase实例
因此,从活动中,如果要访问数据库,必须执行以下操作:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS sampleTable(sampleID INTEGER PRIMARY KEY AUTOINCREMENT,sampleTitle TEXT,sampleDATE BIGINT,trash INTEGER DEFAULT 0) ");
this.dbEvents=db;
}
您能否向我们展示创建DBHelper对象的代码以及调用deleItem方法的代码?请看,您在哪里创建它,将
DB_NAME
设置为什么,但最重要的是,当它崩溃时,错误日志。你可能试图在没有权限的地方创建它。@Drakkin我已经编辑了代码…请检查它的See DuZi答案,就是这样@Drakkin我在dbHelper.getWritableDatabase()行中收到错误[NullPointer Exception],在我的活动中,我调用了dbHelper public void deleteItem(int Id){dbHelper=new dbHelper(this);SQLiteDatabase db1=dbHelper.getWritableDatabase();db1.delete(“sampleTable”,“sampleID”+“=”+Id,null);}确定,把事情弄清楚一点。DBHelper中的onCreate将只调用一次。这就是你的数据库创建的时候。很抱歉让你明白。。。deleteItem是在SqliteOpenHelper类[DBHelper]中编写的,用于执行deleteQuery,当单击Delete按钮时,它在活动中被调用Yes。。。在创建数据库时调用DBHelper
DBHelper dbHelper = new DBHelper(this);
SQLiteDatabase db = dbHelper.getWritableDataBase();
db.query("SELECT * FROM " + sampleTable);