Android Sqlite数据在关闭最近的应用程序后不显示

Android Sqlite数据在关闭最近的应用程序后不显示,android,sqlite,Android,Sqlite,每次我停止应用程序时,数据库中的数据都不会显示,数据库是从第一个数据库创建的。 我不知道问题出在哪里 需要更多和准确的指导 现在信息被存储和显示,但当应用程序从最近的应用程序关闭时,数据库将重建 public SevenLearnDatabaseOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); this.context = context; } @Overri

每次我停止应用程序时,数据库中的数据都不会显示,数据库是从第一个数据库创建的。 我不知道问题出在哪里 需要更多和准确的指导 现在信息被存储和显示,但当应用程序从最近的应用程序关闭时,数据库将重建

public SevenLearnDatabaseOpenHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    this.context = context;
}

@Override
public void onCreate(SQLiteDatabase db) {
    try {

        db.execSQL("CREATE TABLE IF NOT EXISTS " + POST_TABLE_NAME + " (" +
                COL_ID + " INTEGER PRIMARY KEY, " +
                COL_PAGE + " TEXT, " +
                COL_PAGE2 + " TEXT, " +
                COL_NIAT + " TEXT, " +
                COL_DATE + " TEXT);");

        Log.e(TAG, "onCreate: " + "create database");

    } catch (SQLException e) {
        Log.e(TAG, "onCreate: " + e.toString());
    }
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}


public boolean addPost(Post post) {
    ContentValues cv = new ContentValues();
    cv.put(COL_ID, post.getId());
    cv.put(COL_PAGE, post.getPage());
    cv.put(COL_PAGE2, post.getPage2());
    cv.put(COL_NIAT, post.getNiat());
    cv.put(COL_DATE, post.getDate());

    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
    long isInserted = sqLiteDatabase.insert(POST_TABLE_NAME, null, cv);

    Log.i(TAG, "addPost: " + isInserted + "-" + post.getDate());

    if (isInserted > 0) {
        return true;
    } else {
        return false;
    }
}

public void addPosts(List<Post> posts) {
    for (int i = 0; i < posts.size(); i++) {
            addPost(posts.get(i));
    }
}

public List<Post> getPosts() {
    List<Post> posts = new ArrayList<>();

    SQLiteDatabase sqLiteDatabase = this.getReadableDatabase();
    Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM " + POST_TABLE_NAME, null);
    cursor.moveToFirst();
    if (cursor.getCount() > 0) {
        while (!cursor.isAfterLast()) {
            Post post = new Post();
            post.setId(cursor.getInt(0));
            post.setPage(cursor.getString(1));
            post.setPage2(cursor.getString(2));
            post.setNiat(cursor.getString(3));
            post.setDate(cursor.getString(4));
            posts.add(post);
            cursor.moveToNext();
        }
    }
    cursor.close();
    sqLiteDatabase.close();
    System.out.println("rrrrrrrrrrrrrrr" + cursor.getCount());
    return posts;
}

我相信这段代码会导致getPosts方法失败,因为在调用Cursor.getCount时游标被关闭

cursor.close();
sqLiteDatabase.close();
System.out.println("rrrrrrrrrrrrrrr" + cursor.getCount());
return posts;
尝试将此更改为:-

System.out.println("rrrrrrrrrrrrrrr" + cursor.getCount()); //<<<< MOVED BEFORE CURSOR CLOSE
cursor.close();
sqLiteDatabase.close();
return posts;

请向我们显示数据库名称和数据库版本。public static final String DATABASE\u NAME=android.android.eshgh;公共静态最终int数据库_VERSION=1;感谢您现在查看,数据库是如何在您的应用程序中重新构建的?你发布的代码没有什么大问题。如何在数据库中存储和显示条目?