2012-12-23 7 views
6

を変更し、私は次のように定義されたSQLiteのテーブルを変更しようとしている:(1):構文エラーテーブル

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); 

そしてここでは、AUTO_INCREMENT ALTER文です:

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

エラーが発生しました(1) near AUTO_INCREMENT: syntax error

何が問題なのですか?どんな助け?

答えて

1

何が問題なのですか。

無効なSQLを実行しようとしています。

Here is the documentation SQLiteのALTER TABLE文の構文については、存在しない列に数値を割り当てるのではなく、ALTER TABLEを使用して列を追加または名前を変更します。

+0

存在しない列に数値を割り当てようとしていません 列rwo_IDのauto_incrementの機能を1に変更しようとしています。 – Ahlam

+0

@Ahlam:SQLiteのドキュメントを読むことをお勧めします。 'AUTOINCREMENT':http://www.sqlite.org/autoinc.html – CommonsWare

13

SQLiteでは、INTEGER PRIMARY KEYと宣言されたカラムは自動的にインクリメントされます。 AUTOINCREMENTキーワードを削除してから、試してください。

PRIMARY KEYAUTOINCREMENTあるとして列を設定sqliteSQLite FAQ

+0

OK、私は を削除しました' String alter = "ALTER TABLE temp AUTO_INCREMENT = 1;"; 'ourDatabase.execSQL(変更);' それはうまくいきましたが、auto_incrementの値を1にリセットする必要があります。 – Ahlam

+2

テーブルを削除して再作成します。 –

+0

また、エラーが解決した場合は、これを回答として受け入れることができます:) –

4

を確認してください。したがって、明示的に列を指定する必要はありませんAUTOINCREMENT。あなたの参照のためにこれを確認してくださいlink

関連する問題