我想在现有表中添加一列,因此我在onUpgrade中编写了以下查询
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String addMeasureJsonQuery = "ALTER TABLE " + SqlCard.TOOTEET_TABLE + " ADD COLUMN " + Columns.Tooteet.MEASURE_JSON + " TEXT";
if (oldVersion == 1 && newVersion == 2){
db.execSQL(addMeasureJsonQuery);
}
同样更新了数据库版本为2.但我的应用程序崩溃了以下错误
致命异常:Thread-1516进程:MyPackageName,PID:2117
android.database.sqlite.SQLiteException:near“CREATE”:语法错误 (代码1):,编译时:ALTER TABLE CREATE TABLE IF NOT NOT EXISTS tooteets(id TEXT,text TEXT,file_url_1 TEXT,file_url_2 TEXT, thumb_url_1 TEXT,thumb_url_2 TEXT,color TEXT,local_parent_folder TEXT,unique_file_name TEXT,unique_thumbnail_name TEXT,keywords TEXT,created_user_name TEXT,updated_user_name TEXT,is_favorite INTEGER DEFAULT 0,is_tooti_author INTEGER DEFAULT 1,tweet_type INTEGER,等级INTEGER DEFAULT 0,weather_type INTEGER DEFAULT 0, 纬度DOUBLE DEFAULT 0.0,经度DOUBLE DEFAULT 0.0,group_key TEXT,tweet_date INTEGER,group_sort_order INTEGER, no_of_unread_tooteets INTEGER DEFAULT 0,no_of_comments INTEGER DEFAULT 0,no_of_unread_comments INTEGER DEFAULT 0,lane_id TEXT, lane_name TEXT,expense_json TEXT,is_synced INTEGER DEFAULT 0, is_update INTEGER DEFAULT 0,is_deleted INTEGER DEFAULT 0)ADD COLUMN measure_json TEXT
在 android.database.sqlite.SQLiteConnection.nativePrepareStatement(母语 方法)
在 android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1113)
在 android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:690)
在 android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
在android.database.sqlite.SQLiteProgram。(SQLiteProgram.java:58)
在 android.database.sqlite.SQLiteStatement。(SQLiteStatement.java:31)
在 android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1806)
在 android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1737)
at MyPackageName.database.DBSQLite.onUpgrade(DBSQLite.java:80)
在 android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:257)
在 android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
at MyPackageName.database.DBSQLite.getDatabase(DBSQLite.java:56)
at MyPackageName.MyApplicationClass $ 1.run(MyApplicationClass.java:68)
在java.lang.Thread.run(Thread.java:841)
您能否建议我解决这个问题?在此先感谢...
答案 0 :(得分:2)
您应该直接提供表格名称(tooteets)而不是SqlCard.TOOTEET_TABLE
。因此,只有您在#34; CREATE"
您可以使用我使用的以下代码。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// If you need to add a column
if (newVersion > oldVersion) {
db.execSQL("ALTER TABLE tooteets ADD COLUMN measure_json TEXT");
}
}