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

"ALTER TABLE registeration ADD memberid TEXT;";または"ALTER TABLE registeration ADD COLUMN memberid TEXT;";構文に誤りがあります。

Yout テーブルはどこに作成していますか? で実行DATABASE_UPDATEしていますonCreate()

于 2012-07-21T12:30:26.650 に答える
0

あなたはそれを知っておくべきです

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

作成tablesしていくつかの初期値を入力する必要がありますが、コードのスニペットでテーブルを作成していません。

テーブルをアップグレードするには、使用する必要があります

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

ドキュメントから正確に:

データベースをアップグレードする必要があるときに呼び出されます。実装では、このメソッドを使用して、テーブルの削除、テーブルの追加、または新しいスキーマ バージョンへのアップグレードに必要なその他の処理を行う必要があります。

こちらもご覧ください

于 2012-07-21T12:34:33.813 に答える