2017-03-01 7 views
0

アンドロイドとSQLiteデータベースで作業しようとしています。私はどのようにテーブルのこの行にデータを追加し、autoincrementsが同じメソッドで返されたgameid列を取得するのかわかりません。 (これは私の最初の投稿です、私の投稿の誤差をお許しください)アンドロイドでSQLiteデータベースに挿入し、自動インクリメントされた値を返す

public static final String GAME_COLUMNS = " (GAME_ID INTEGER PRIMARY KEY AUTOINCREMENT, ADMIN_ID TEXT, SCORE1 INTEGER DEFAULT 0, SCORE2 INTEGER DEFAULT 0);"; 


public int createGame(String email){ 
    if(email!=null){ 
     SQLiteDatabase test = this.getWritableDatabase(); 
     test.execSQL("INSERT INTO "+ GAME_TABLE + " VALUES(NULL, '"+ email + "',NULL, NULL);"); 
     int gameID = test.executeQuery("select last_insert_id() from "+GAME_TABLE); 

     return gameID; 
    } 

} 
+1

あなたはSOの他の記事で確認しました、このものであってもよいhttp://stackoverflow.com/questions/22441287/auto-incrementing-id-value-when-inserting-into-sqliteを助けることができる – pratibha

答えて

2

あなたはselect last_insert_id()を使用する必要はありません。

public int createGame(String email) { 
    int result = -1; 
    if (email!=null) { 
     SQLiteDatabase test = this.getWritableDatabase(); 
     ContentValues values = new ContentValues(); 
     values.put(EMAIL, email);                                 
     result = database.insert(GAME_TABLE, null, values); // this will return the last id you inserted 
    } 
    return result; 
} 
+0

正しいアイデアだが、壊れた戻りの流れがある(これはコンパイルされないだろう) –

+0

@NickCardosoは訂正してくれてありがとう –

関連する問題