【问题标题】:The app does not work on Android 9 due to SQLit由于 SQLite,该应用无法在 Android 9 上运行
【发布时间】:2021-09-30 21:14:00
【问题描述】:

该应用程序适用于 Android 4、5 和 11 但是

我不知道问题的原因,但我有 Android 9 希望你 可以帮助我
你能解决这个问题吗?我收到了很多关于它的消息,希望你能帮助我

MainActivity.java 中的问题位置

public void import_Main_listIndex() {

        listIndex = db_index.get_All_Main_Titles();
        listAdapter adapter1 = new listAdapter(listIndex);
        listView_main.setAdapter(adapter1);
    }
    @SuppressWarnings("unchecked")
    public void import_Sup_listIndex(String main_title) {
        textView_Title.setText(globalVar.getMain_Title());
        listIndex = db_index.get_All_Sub_Titles(main_title);
        listAdapter adapter1 = new listAdapter(listIndex);
        listView_main.setAdapter(adapter1);
    }


    @Override
    protected void onResume() {
        super.onResume();


        String indexType = globalVar.getListType();
        switch (indexType) {
            case "index":
                import_Main_listIndex();
                textView_Title.setText(getString(R.string.index));
                break;
            case "Sup_index":

                import_Sup_listIndex(globalVar.getMain_Title());
                break;
            case "favorite":

                import_from_favorite();
                break;

            case "search":
                search_listIndex();
                break;
        }
    }

databaseHelper.class

public class DatabaseHelper extends SQLiteOpenHelper {
    public static final String DBNAME = "rifai.db";
    public static final String DBLOCATION = Environment.getDataDirectory() + "/data/com.abo3bdo.abcd/databases/";
    private Context mContext;
    private SQLiteDatabase mDatabase;
    private static final int DATABASE_VERSION = 1;


    public DatabaseHelper(Context context) {
        super(context, DBNAME, null, DATABASE_VERSION);
        this.mContext = context;
    }

    @Override
    public void onOpen(SQLiteDatabase db) {
        onCreate(db);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

    }

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

    public void openDatabase() {
        String dbPath = mContext.getDatabasePath(DBNAME).getPath();
        if (mDatabase != null && mDatabase.isOpen()) {
            return;
        }
        mDatabase = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE);
    }

    public void closeDatabase() {
        if (mDatabase != null) {
            mDatabase.close();
        }
    }

    public ArrayList get_All_Main_Titles() {
        ArrayList<com.abo3bdo.abcd.List_itme_Index> arrayList = new ArrayList<>();
        openDatabase();
        Cursor res = mDatabase.rawQuery("select * from Main_Titles", null);
        res.moveToFirst();
        while (!res.isAfterLast()) {
            String id = res.getString(res.getColumnIndex("id"));
            String main_title = res.getString(res.getColumnIndex("M_Titles"));
            arrayList.add(new com.abo3bdo.abcd.List_itme_Index("",id, main_title, ""));
            res.moveToNext();
        }
        res.close();
        closeDatabase();
        return arrayList;
    }

    public ArrayList get_All_Sub_Titles(String main_titles) {
        ArrayList<com.abo3bdo.abcd.List_itme_Index> arrayList = new ArrayList<>();
        openDatabase();
        Cursor res = mDatabase.rawQuery("select * from Titles where Main_title like '" + main_titles + "'", null);
        res.moveToFirst();
        while (!res.isAfterLast()) {
            String id = res.getString(res.getColumnIndex("id"));
            String main_title = res.getString(res.getColumnIndex("Main_title"));
            String sub_title = res.getString(res.getColumnIndex("Sub_title"));
            arrayList.add(new com.abo3bdo.abcd.List_itme_Index("",id, main_title, sub_title));
            res.moveToNext();
        }
        res.close();
        closeDatabase();
        return arrayList;
    }



    public ArrayList get_Search(String sub_titles) {
        ArrayList<com.abo3bdo.abcd.List_itme_Index> arrayList = new ArrayList<>();
        openDatabase();
        Cursor res = mDatabase.rawQuery("select * from Titles where Sub_title like '%" + sub_titles + "%'", null);
        res.moveToFirst();
        while (!res.isAfterLast()) {
            String id = res.getString(res.getColumnIndex("id"));
            String main_title = res.getString(res.getColumnIndex("Main_title"));
            String sub_title = res.getString(res.getColumnIndex("Sub_title"));
            arrayList.add(new com.abo3bdo.abcd.List_itme_Index("",id, main_title, sub_title));
            res.moveToNext();
        }
        res.close();
        closeDatabase();
        return arrayList;
    }


}

logcat

3719-3719/com.abo3bdo.abcd E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.abo3bdo.abcd, PID: 3719
        java.lang.RuntimeException: Unable to resume activity {com.abo3bdo.abcd/com.abo3bdo.abcd.MainActivity}: android.database.sqlite.SQLiteException: no such table: Main_Titles (code 1 SQLITE_ERROR): , while compiling: select * from Main_Titles
            at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3784)
            at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3816)
            at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)
            at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
            at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
            at android.os.Handler.dispatchMessage(Handler.java:106)
            at android.os.Looper.loop(Looper.java:193)
            at android.app.ActivityThread.main(ActivityThread.java:6669)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
         Caused by: android.database.sqlite.SQLiteException: no such table: Main_Titles (code 1 SQLITE_ERROR): , while compiling: select * from Main_Titles
            at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
            at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:903)
            at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:514)
            at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
            at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
            at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
            at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:46)
            at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1408)
            at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1347)
            at com.abo3bdo.abcd.DatabaseHelper.get_All_Main_Titles(DatabaseHelper.java:55)
            at com.abo3bdo.abcd.MainActivity.import_Main_listIndex(MainActivity.java:449)
            at com.abo3bdo.abcd.MainActivity.onResume(MainActivity.java:470)
            at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1412)
            at android.app.Activity.performResume(Activity.java:7292)
            at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3776)
            at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3816) 
            at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51) 
            at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145) 
            at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
            at android.os.Handler.dispatchMessage(Handler.java:106) 
            at android.os.Looper.loop(Looper.java:193) 
            at android.app.ActivityThread.main(ActivityThread.java:6669) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
    2021-07-23 22:11:12.896 3719-3995/com.abo3bdo.abcd I/Ads: Ad failed to load : 2

我希望救生员会在那里

【问题讨论】:

标签: java android sqlite android-sqlite


【解决方案1】:

感谢大家帮忙,问题已经解决

public void onOpen(SQLiteDatabase db) {
    super.onOpen(db);
    db.disableWriteAheadLogging();
}

谢谢你,Mike M 先生

【讨论】:

    猜你喜欢
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 2019-04-16
    相关资源
    最近更新 更多