改变android中的表格代码...

时间:2012-07-21 12:19:15

标签: android sqlite

以下是我用来改变我的表但我的应用程序崩溃的代码。

我已经分别创建了这个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();
}
}

2 个答案:

答案 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:

  

需要升级数据库时调用。实施   应该使用此方法删除表,添加表或执行任何其他操作   它需要升级到新的架构版本。

还要看看