2017-04-07 7 views
0

アンドロイドのSQLiteでテーブルをクエリしようとしています。テーブルにクエリを実行すると、ID番号は1から始まり、すべての行で増分します。しかし、現時点で私のテーブルを照会すると、元のテーブルテーブルのID番号が表示されます。 何か提案がありがとうございます。AndroidのSQLクエリでID番号を1に設定する方法

 private static String[] FROM = {_ID, TITLE, DATE, TIME, DETAILS}; 
private static String ORDER_BY = TIME + " ASC"; 

private Cursor getAppointments() { 
    SQLiteDatabase db = appointments.getReadableDatabase(); 
    Cursor cursor = db.query(TABLE_NAME, FROM, DATE + "=?", new String[] {date}, null, null, ORDER_BY, null); 
    startManagingCursor(cursor); 
    return cursor; 
} 

} 
+0

質問は「sqliteについて」です。なぜ「mysql」にタグを付けるのですか? – denny

+0

私の悪い申し訳ありません:) –

答えて

0

一般的に、IDの値は、ユニークであり、したがって行を識別するのではなく、本当に心配するべきではありません。

もしPRIMARY KEYとして _id列を持つテーブルを定義する場合、 _ID を設定する場合は、最初の行を挿入するとき、それは通常1で開始されていない限り、その後、次は通常2になり、次いで3など

あなたががAUTOINCREMENTをコーディングする場合AUTOINCREMENTは、データベースレベルで値が一意になりますように、これは、場合ではないかもしれません。

ここSQLite Autoincrement

約エキスだAUTOINCREMENTキーワードは余分なCPU、メモリ、ディスク容量、および ディスクI/Oのオーバーヘッドを課し、厳密に必要でない場合は避けるべきです。通常は不要です です。

In SQLite, a column with type INTEGER PRIMARY KEY is an alias for the ROWID (except in WITHOUT ROWID tables) which is always a 64-bit 

符号付き整数。

On an INSERT, if the ROWID or INTEGER PRIMARY KEY column is not explicitly given a value, then it will be filled automatically with an 

未使用整数、 現在使用中の最大ROWIDより通常1以上です。これは、AUTOINCREMENT キーワードが使用されているかどうかに関係なく適用されます。

If the AUTOINCREMENT keyword appears after INTEGER PRIMARY KEY, that changes the automatic ROWID assignment algorithm to prevent the 

データベースの存続期間中のROWIDの再使用。つまり、AUTOINCREMENTの の目的は、以前に削除された行 からのROWIDの再利用を防止することです。

私は質問が

あたりと解釈することができる方法である、あなたは_idを動的にクエリ後に抽出された行の順序であることを変わるという期待を持っていないと仮定しています

私は私のテーブルを照会するとき、私はID番号は行ごとに1と 増分から始めたい

これはあなたの質問である場合は、通常、あなたは、カーソルをループしたいではなく、これをしないだろうこれはクエリに基づいて並べ替えられます。最初に1、2、3で参照されるようにしたい場合は、カーソルをループしてそのような番号の配列を作成することができます。

+0

私は主キーとしてIDを持っているから来て、私のプログラムのために自動インクリメントには非常に重要です。しかし、助けてくれてありがとう、私はカーソル配列のアイデアを通してループをやろうとします。ありがとう。 –

+0

残念ながら、私はカーソル配列を動作させるように見えません。しかし、助けてくれてありがとう。 –

関連する問題