原因:android.database.sqlite.SQLiteException:无法将只读数据库从版本0升级到1

原因:android.database.sqlite.SQLiteException:无法将只读数据库从版本0升级到1,android,android-sqlite,Android,Android Sqlite,尝试创建SQLite数据库时,我遇到以下LogCat异常: 原因:android.database.sqlite.SQLiteException:无法将只读数据库从版本0升级到1 这是我的密码: import static android.provider.BaseColumns._ID; import static org.inetizen.university_timetable.Constants.DAY_OF_WEEK; import static org.inetizen.univer

尝试创建SQLite数据库时,我遇到以下LogCat异常:

原因:android.database.sqlite.SQLiteException:无法将只读数据库从版本0升级到1

这是我的密码:

import static android.provider.BaseColumns._ID;
import static org.inetizen.university_timetable.Constants.DAY_OF_WEEK;
import static org.inetizen.university_timetable.Constants.DURATION;
import static org.inetizen.university_timetable.Constants.MODULE_CODE;
import static org.inetizen.university_timetable.Constants.ROOM;
import static org.inetizen.university_timetable.Constants.START_TIME;
import static org.inetizen.university_timetable.Constants.TABLE_NAME;
import static org.inetizen.university_timetable.Constants.TYPE_OF_SESSION;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class TimeTableData extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "timetable.db";
private static final int DATABASE_VERSION = 1;

/** Create a helper object for the TimeTable database **/
public TimeTableData(Context ctx) {
    super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +_ID
            + " INTEGER PRIMARY KEY AUTOINCREMENT " + MODULE_CODE
            + " TEXT NOT NULL " + DAY_OF_WEEK + " TEXT NOT NULL "
            + START_TIME + " INTEGER NOT NULL " + DURATION
            + " INTEGER NOT NULL " + TYPE_OF_SESSION + " TEXT NOT NULL "
            + ROOM + " TEXT NOT NULL )");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
}
}
这是我的日志:

有关如何解决异常的任何建议?

您可以尝试getWritableDatabase。 愿此链接对您有所帮助


您使用的SQL语法看起来不正确,缺少逗号。试试这个:
db.execSQLCREATE TABLE+TABLE_NAME++_ID+整数主键自动递增,+模块代码+文本不为空,+周天数+文本不为空,+开始时间+整数不为空,+持续时间+整数不为空,+会话类型不为空+文本不为空,+房间+文本不为空

您没有显示db.open方法。。。我敢打赌,您打开的数据库不是可写的。它应该是这样的:

public GroceryDB open() throws SQLException {
    mDBHelper = new DBHelper(mCtx);
    mDb = mDBHelper.getWritableDatabase();
    return this;
}

set:version=2私有静态最终int数据库_version=2;您好,感谢您的快速回复,我收到了相同的错误,但无法从版本0升级到2plz。请尝试版本3或4。它将工作检查您的日志,还有另一个错误导致创建/升级数据库失败。可能是因为您没有在create语句中的每个列定义后添加一个,这是一个logcatAh的粘贴对不起,我有这个私有游标getClasseString[]args{SQLiteDatabase db=timeline.getWritableDatabase;Cursor Cursor=db.rawQuerySELECT*从时间表中选择,其中周的天=?ORDER BY+ORDER BY,args;startManagingCursorcursor;return Cursor;}啊。简单的解决方案到此为止。
public GroceryDB open() throws SQLException {
    mDBHelper = new DBHelper(mCtx);
    mDb = mDBHelper.getWritableDatabase();
    return this;
}