Java 我是否正确地将游标用于SQLite?

Java 我是否正确地将游标用于SQLite?,java,android,sqlite,Java,Android,Sqlite,我第一次“试验”了Android Studio和SQLite。我的应用程序屏幕在打开新活动时变白并冻结,该活动应显示我的SQL查询值 public class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper (Context context) { super(context,"book.db", null, 1); } @Override public void onCreate(SQLiteDatab

我第一次“试验”了Android Studio和SQLite。我的应用程序屏幕在打开新活动时变白并冻结,该活动应显示我的SQL查询值

public class DatabaseHelper extends SQLiteOpenHelper {

public DatabaseHelper (Context context) {
    super(context,"book.db", null, 1);

}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table books (ID INTEGER NOT NULL PRIMARY KEY, " +
            "BOOK_TITLE TEXT NOT NULL, BOOK_CATEGORY TEXT NOT NULL, " +
            "BOOK_DESCRIPTION TEXT NOT NULL)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("drop table if exists books");
    onCreate(db);
}

public boolean insertData(String book_title_, String book_category_, String book_description_)
{
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cValues = new ContentValues();
    cValues.put("BOOK_TITLE", book_title_);
    cValues.put("BOOK_CATEGORY", book_category_);
    cValues.put("BOOK_DESCRIPTION", book_description_);
    long result = db.insert("book", null, cValues);
    if (result == -1)
        return false;
    return true;
}

public Cursor getAllData()
{
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res = db.rawQuery("SELECT * FROM book", null);
    return res;
}
}
我发现问题在于从另一个类调用getAllData()函数。按照我的逻辑,一切都应该正常工作?我认为问题出在我的查询中,但根据谷歌的说法,我做的一切都很好。
有什么建议吗?

试试这个方法。这是一种非常有效的方法:

public List<Movie> getAllData()
{
    List<Movie> movies_list = new ArrayList<>();
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res = db.rawQuery("SELECT * FROM movie_collection", null);
    while(res.moveToNext())
    {
        movies_list.add(new Movie(res.getString(1)+"\n", res.getString(2)+"\n", res.getString(3)+"\n", R.drawable.gladiator));
    }
    res.close();
    return movies_list;
}

从Android Studio的logcat添加错误日志刚刚添加了logcatUse
this.getReadableDatabase()。您忘记初始化
movie\u数据库
。放置
movie\u数据库=新数据库(此)
在您的活动中
onCreate()
。谢谢@laalto的出色表现!不要忘记使用finally关闭数据库连接和游标。非常重要,是的。我关闭了连接:-D
public void viewAll()
{
    movies_list = movie_database.getAllData();
    // do whatever you want
}