2011-06-22 11 views
1

が、私はチュートリアルhttp://www.anotherandroidblog.com/2010/08/04/android-database-tutorial/の助けを借りて、自分のデータベースを構築し、コードが正常に動作しているが、問題は、私は特定のIDから項目を削除すると、それだけで行を削除していることですそのIDは行方不明になる。あなたは、割り当てられたすべてのID秒の記録を保持したい場合は削除の異常を削除しますか?私は、データベースを構築したアプリケーションを開発してい

private class CustomSQLiteOpenHelper extends SQLiteOpenHelper 

{ 
    public CustomSQLiteOpenHelper(Context context) 
    { 
     super(context, DB_NAME, null, DB_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) 
    { 
     // This string is used to create the database. It should 
     // be changed to suit your needs. 
     String newTableQueryString = "create table " + 
            TABLE_NAME + 
            " (" + 
            TABLE_ROW_ID + " integer primary key autoincrement not null," + 
            TABLE_ROW_ONE + " text," + 
            TABLE_ROW_TWO + " text" + 
            ");"; 
     // execute the query string to the database. 
     db.execSQL(newTableQueryString); 
    } 

と削除

public void deleteRow(long rowID) 
{ 
    // ask the database manager to delete the row of given id 
    try {db.delete(TABLE_NAME, TABLE_ROW_ID + "=" + rowID, null);} 
    catch (Exception e) 
    { 
     Log.e("DB ERROR", e.toString()); 
     e.printStackTrace(); 
    } 
+0

「そのIDの喪失」とはどういう意味ですか?行を削除すると、もちろんIDは削除されます。それはなぜ問題なのですか? – Mat

+0

行またはその行の特定の項目を削除しますか? – Sujit

+0

@Mat私よりも人がそれを使うならば、IDが一度削除されればそれが分からないかもしれないし、彼がそのIDの基底を検索しようとすると、何の奇妙なものも見つけられないだろう削除後のデータを –

答えて

2

のための:どのように私は、そのID

コードは以下の通りであるの損失を避けることができますある時点では、「プライマリ」テーブルの対応する行を削除することはできません。

あなたは、そのレコードがアクティブであるかどうかを格納するために余分な状態カラム(intやboolean)を使用することができます。

新しいアイテムを作成するときは、その状態を「アクティブ」に設定します。削除するときは行を削除せずに、状態列を「非アクティブ」に更新してください。

関連する問題