2012-12-23 15 views
6

Próbuję zmienić tabelę SQLite zdefiniowane następująco:(1) blisko "AUTO_INCREMENT": błąd składni podczas zmieniania tabeli

String CREATE_TABLE="CREATE TABLE IF NOT EXISTS " + tab_NAME + " (" 
          + row_ID + " INTEGER PRIMARY KEY , " 
          + row_NAME + " TEXT, " 
          + row_EMAIL + " TEXT, " 
          + row_WEBSITE + " TEXT, " 
          + row_TELEPHONE1 + " TEXT, " 
          + row_TELEPHONE2 + " TEXT, " 
          + row_TELEPHONE3 + " TEXT, " 
          + row_TELEPHONE4 + " TEXT, " 
          + row_TELEPHONE5 + " TEXT);"; 
     db_name.execSQL(CREATE_TABLE); 

     String newTab="CREATE TABLE IF NOT EXISTS temp (" 
       + row_ID + " INTEGER PRIMARY KEY AUTOINCREMENT , " 
       + row_NAME + " TEXT, " 
       + row_EMAIL + " TEXT, " 
       + row_WEBSITE + " TEXT, " 
       + row_TELEPHONE1 + " TEXT, " 
       + row_TELEPHONE2 + " TEXT, " 
       + row_TELEPHONE3 + " TEXT, " 
       + row_TELEPHONE4 + " TEXT, " 
       + row_TELEPHONE5 + " TEXT);"; 
     db_name.execSQL(newTab); 

A oto auto_increment ALTER:

String alter="ALTER TABLE temp AUTO_INCREMENT=1;"; 
    ourDatabase.execSQL(alter); 

Wystąpił błąd informujący, że (1) near AUTO_INCREMENT: syntax error

co jest nie tak? jakaś pomoc??

Odpowiedz

1

co jest nie tak?

Podjęto próbę wykonania nieprawidłowego SQL.

jakiej pomocy?

Here is the documentation dla składni instrukcji ALTER TABLE w SQLite. Używasz ALTER TABLE, aby dodawać lub zmieniać nazwy kolumn, a nie przypisywać nieistniejących kolumn wartości liczbowej.

+0

Nie próbuję przypisać nieistniejących kolumn wartości numerycznej, Próbuję zmienić funkcję auto_increment dla kolumny rwo_ID wartości na 1. – Ahlam

+0

@Ahlam: Zachęcam do zapoznania się z dokumentacją SQLite dla 'AUTOINCREMENT': http://www.sqlite.org/autoinc.html – CommonsWare

13

W SQLite kolumna zadeklarowana przez INTEGER PRIMARY KEY automatycznie się powiększy. Usuń słowo kluczowe AUTOINCREMENT, a następnie spróbuj.

Sprawdź SQLite FAQ

+0

ok, usunąłem ' String alter = "ALTER TABLE temp AUTO_INCREMENT = 1;"; ' ' ourDatabase.execSQL (alter); ' i działało dobrze, ale muszę zresetować wartość auto_increment do 1, więc co zrobić? – Ahlam

+2

Upuść tabelę i ponownie ją utwórz. –

+0

Możesz również zaakceptować to jako odpowiedź, jeśli błąd został rozwiązany :) –

4

W sqlite ustawienie kolumny jako PRIMARY KEY jest AUTOINCREMENT. Nie ma potrzeby określania jawnie kolumny jako AUTOINCREMENT. Sprawdź to link w celach informacyjnych.

Powiązane problemy