0

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

我已经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();
}
}
4

2 回答 2

0

你应该知道在

public void onCreate(SQLiteDatabase db ){ ... }

您应该创建并使用一些初始值tables填充它们,并且您没有在代码片段中创建表。

升级你的表,你应该使用

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { ... }

完全来自文档:

当数据库需要升级时调用。实现应使用此方法删除表、添加表或执行升级到新模式版本所需的任何其他操作。

也有看看

于 2012-07-21T12:34:33.813 回答
0

使用"ALTER TABLE registeration ADD memberid TEXT;";"ALTER TABLE registeration ADD COLUMN memberid TEXT;";您有语法错误。

你在哪里创建你的表?您正在执行DATABASE_UPDATE您的onCreate().

于 2012-07-21T12:30:26.650 回答