Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android数据库返回空值_Java_Android_Sqlite - Fatal编程技术网

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);