java-删除android数据库后,getReadableDatabase()将不会创建新数据库

java-删除android数据库后,getReadableDatabase()将不会创建新数据库,第1张

概述我通过执行rm/data/data/app/databases/database删除了android数据库.删除它后,我尝试再次运行该应用程序,但由于未创建表而引发异常.我得到的例外是E/AndroidRuntime:致命异常:main    java.lang.RuntimeException:无法创建服务wificontroller.WifiControllerServic

我通过执行rm / data / data / app / databases / database删除了android数据库.删除它后,我尝试再次运行该应用程序,但由于未创建表而引发异常.我得到的例外是E / AndroidRuntime:致命异常:main
    java.lang.RuntimeException:无法创建服务wificontroller.WifiControllerService:androID.database.sqlite.sqliteException:无此类表:

我在创建表

public class DataStore extends sqliteOpenHelper{private static final String TAG = "Database";private static final String Databasename = "Database";private static final String NICKname_table_name = "nicknames";private static final String SCAN_table_name = "scans";private static final int Version = 2;private static final String NICKname_table_CREATE = "query I cant show"private static final String SCAN_table_CREATE = "query I cant show"public DataStore(Context context) {    super(context, Databasename , null, Version);}@OverrIDepublic voID onCreate(sqliteDatabase db) {    Log.d(TAG, "Creating database");    try {        db.execsql(NICKname_table_CREATE);        db.execsql(SCAN_table_CREATE);    }    catch (Exception e){        Log.e(TAG, "Could not create database", e);        Log.e(TAG, "query 1: " + NICKname_table_CREATE);        Log.e(TAG, "query 2: " + SCAN_table_CREATE);    }}@OverrIDepublic voID onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) {    Log.w(TAG, "On Upgrade called");}public String[] getScanColumns(){    return new String[]{"accesspoints", "clIEnts", "status","timeOfStartScan", "packetsFound"};}public String getDatabasename(){    return Databasename;}public String getScantablename(){    return SCAN_table_name;}

而调用数据库的方法是

sqliteDatabase database = dbHelper.getReadableDatabase();Cursor mCursor = database.rawquery("SELECT query", null); //THIS IS THE liNE THAT THROWS THE EXCEPTIONtry {    if (mCursor != null) {        mCursor.movetoFirst();        Log.w(Tag, "Packets found on last scan = " + mCursor.getString(mCursor.getColumnIndex("packetsFound")));        Log.i(Tag, "Successfully loaded database scan");     } else {        Log.w(Tag, "Could not retrIEve scan from database");     } } catch (Exception e){    Log.w(Tag, "Could not retrIEve scan data from database probably because it doesn't exist");}finally {        mCursor.close();}

我已经验证了创建或升级时都不会被调用.抱歉,我无法发布查询,但是我知道它们可以正确编译,因为它已经工作了很长时间了.

我尝试重新安装该应用程序并删除所有用户数据,但没有任何效果.关于为什么突然之间我无法查询数据库的任何想法.

解决方法:

以防万一其他人也遇到了这个问题.我的最初失败是因为数据库不知道数据库已更改,因此如上所述,我需要增加版本,但是当我的on create在尝试执行所有查询之前失败时,我遇到了一个非常相似的问题.其中一个查询很糟糕,我第一次执行它时失败了,但是之后每次都不会尝试调用Create.简而言之,如果Oncreate一次失败,则必须从手机中完全删除该应用程序,然后重试.

总结

以上是内存溢出为你收集整理的java-删除android数据库后,getReadableDatabase()将不会创建新数据库全部内容,希望文章能够帮你解决java-删除android数据库后,getReadableDatabase()将不会创建新数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存