2014-11-25 3 views
0

У меня есть 4 EditTexts в базеandroid sqlite имеют пробел после строки удаления?

я удалить второй один

База данных нумеруются 1,3,4

теперь я хочу, чтобы пронумеровать как 1,2,3.

Я посмотрел на многих решений Но я не мог найти полный ответ .. я не знаю, что должно быть в письменной форме я попытался следующий код. Но этого не произошло

db.delete("SQLITE_SEQUENCE","NAME = ?",new String[]{TABLE_NAME}); 

Кто-нибудь есть полный ответ?

+0

Если я понял, что вы просите ... ** NO **, идентификаторы не перенумерованы. Что было бы действительно опасно, когда разные таблицы связаны идентификатором. –

ответ

1

В общем, это плохой дизайн для базы данных. Идентификатор должен быть последовательным для части данных, независимо от ее сверстников - она ​​не должна колебаться только потому, что была удалена другая строка.

Это, как говорится, всегда можно использовать заявление UPDATE на номер SET ID = ID-1 WHERE ID > (the ID of the row you deleted). Это сработает. Я не рекомендую этот подход, но вы можете.

+0

dataBase.execSQL ("UPDATE T1 SET ID = ID-1 WHERE ID>" + rowDelete + ";"); я правильно понял? – user3767806

+0

очень приятно .. очень важно – user3767806

0

Вы можете восстановить это пространство, выполнив команду SQLite VACUUM.

Вызов db.execSQL("VACUUM") после удаления

+0

Это не то, о чем просили. –

+0

@CL. взгляните на этот пример: http://www.sqlabs.com/blog/2010/12/sqlite-and-unique-rowid-something-you-really-need-to-know/ - это не то, о чем просили ? – Rami

+0

Это относится только к неявному столбцу «rowid»; явная колонка INTEGER PRIMARY KEY никогда не изменяется [VACUUM] (http://www.sqlite.org/lang_vacuum.html). –