尝试创建SQLite数据库时,我收到以下LogCat异常:
Caused by: android.database.sqlite.SQLiteException: Can’t upgrade read-only database from version 0 to 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); } }
这是我的LogCat:
06001
有关如何解决异常的任何建议?
解决方法
您使用的SQL语法看起来不正确,您缺少逗号.试试这个: 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)“);