以下是我用来改变我的表但我的应用程序崩溃的代码。
我已经分别创建了这个dbupdateadapter
类。正在添加记录,但该列未添加到同一个表
public class dbupdateadapter {
public static final String TABLE_MEMBERID="memberid";
private static final String DATABASE_NAME="myfemmefab.db";
private static final String TABLE_NAME="registeration";
private static final int DATABASE_VERSION=2;
private static final String DATABASE_UPDATE="ALTER TABLE registeration ADD COLUMN(memberid TEXT);";
private static Context context1;
private dbhelper1 helper1;
private SQLiteDatabase sdb1;
public dbupdateadapter(Context con){
this.context1=con;
helper1=new dbhelper1(context1);
}
public class dbhelper1 extends SQLiteOpenHelper{
public dbhelper1(Context context){
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sdb1){
sdb1.execSQL(DATABASE_UPDATE);
}
@Override
public void onUpgrade(SQLiteDatabase sdb1,int oldver,int newver){
//android.util.Log.w("constants", "upgrading database will destroy the old data");
if(newver>oldver){
sdb1.execSQL(DATABASE_UPDATE);
}
//onCreate(sdb1);
}
}
public dbupdateadapter open() throws SQLException{
sdb1=helper1.getWritableDatabase();
return this;
}
void insertcoldata (String memberid){
ContentValues cv1=new ContentValues();
cv1.put(TABLE_MEMBERID, memberid);
sdb1.insert(TABLE_NAME, null, cv1);
}
public void close(){
helper1.close();
}
}
答案 0 :(得分:0)
使用"ALTER TABLE registeration ADD memberid TEXT;";
或"ALTER TABLE registeration ADD COLUMN memberid TEXT;";
您的语法错误。
你在哪里创建你的桌子?您正在DATABASE_UPDATE
执行onCreate()
。
答案 1 :(得分:0)
你应该知道
public void onCreate(SQLiteDatabase db ){ ... }
您应该创建tables
并使用一些初始值填充它们,并且您没有在代码片段中创建表格。
升级你的桌子应该使用
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { ... }
完全来自docs:
需要升级数据库时调用。实施 应该使用此方法删除表,添加表或执行任何其他操作 它需要升级到新的架构版本。
还要看看