有人可以解释这段代码

时间:2013-05-19 16:06:22

标签: android sqlite

当我尝试打开网络浏览器(从Kindle fire HD中的家中)时,它显然无法启动。 我检查了设备日志,可以找到以下异常:

android.database.sqlite.SQLiteException:无法将只读数据库从版本29升级到27

我用Google搜索了异常并发现以下代码片段引发了此异常。有人可以清楚地解释一下这个问题。我需要为此做些什么

try {
             mIsInitializing = true;
             String path = mContext.getDatabasePath(mName).getPath();
             db = SQLiteDatabase.openDatabase(path, mFactory, SQLiteDatabase.OPEN_READONLY,
                     mErrorHandler);
             if (db.getVersion() != mNewVersion) {
                 throw new SQLiteException("Can't upgrade read-only database from version " +
                         db.getVersion() + " to " + mNewVersion + ": " + path);
             }

2 个答案:

答案 0 :(得分:0)

private final int mNewVersion;

public SQLiteOpenHelper(Context context,String name,CursorFactory factory,int version,                   DatabaseErrorHandler errorHandler){               if(version< 1)抛出新的IllegalArgumentException(“版本必须> = 1,是”+版本);               if(errorHandler == null){                   抛出新的IllegalArgumentException(“DatabaseErrorHandler param值不能为null。”);               }

          mContext = context;
          mName = name;
          mFactory = factory;
          mNewVersion = version;
          mErrorHandler = errorHandler;
     }

答案 1 :(得分:0)

你可以提供更多的上下文,特别是因为Kindle产品正在运行Android的分支。

关于来源,我只能找到tarball:

http://www.amazon.com/gp/help/customer/display.html?nodeId=200203720&tag=viglink121875-20

您是如何获得上面显示的源代码的(请链接)?

代码表示它根本不准备支持不同数据库版本之间的升级。

在您的方案中需要做的是从版本29升级到27,这将是降级。