Android - El autoincrement de mi columna id no funciona

 
Vista:
sin imagen de perfil

El autoincrement de mi columna id no funciona

Publicado por Jessica (1 intervención) el 18/06/2016 00:33:35
Hola a todos,

Tengo un problema a la hora de hacer INSERT en una tabla, y es que la columna id siempre es 0 y no se autoincrementa. Uso SQLite.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package com.example.jessi.moopooh;
 
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * Created by jessi on 17/06/2016.
 */
public class BDJuego extends SQLiteOpenHelper {
    private static final String NOMBRE_BD = "bdmoopooh.db";
    private static final int VERSION_BD = 1;
    private static final String TABLA_PUNTUACIONES = "CREATE TABLE puntuaciones" +
            "(_id INTEGER PRIMARY KEY AUTOINCREMENT, nombre_juego TEXT NOT NULL, nombre_nivel TEXT NOT NULL, puntos INTEGER NOT NULL, UNIQUE(nombre_nivel))";
 
    public BDJuego(Context context) {
        super(context, NOMBRE_BD, null, VERSION_BD);
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(TABLA_PUNTUACIONES);
 
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLA_PUNTUACIONES);
        onCreate(db);
 
    }
 
    public void insertarPuntuaciones(String nombre_juego, String nombre_nivel, int puntos) {
        SQLiteDatabase db = getWritableDatabase();
        if (db != null) {
            ContentValues valores = new ContentValues(); //como su nombre indica es un almacenador de un conjunto de datos
            //valores.put("_id", id);
            valores.put("nombre_juego", nombre_juego);
            valores.put("nombre_nivel", nombre_nivel);
            valores.put("puntos", puntos);
            db.insert("puntuaciones", null, valores);
            db.close();
        }
    }
 
    //Este método no sé si lo usaré
    public void modificarPuntuaciones(int id, String nombre_juego, String nombre_nivel, int puntos) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues valores = new ContentValues();
        // valores.put("_id", id);
        valores.put("nombre_juego", nombre_juego);
        valores.put("nombre_nivel", nombre_nivel);
        valores.put("puntos", puntos);
        db.update("puntuaciones", valores, "_id=" + id, null);
        db.close();
    }
 
    //Este método no sé si lo usaré
    public void borrarPuntuaciones(int id) {
        SQLiteDatabase db = getWritableDatabase();
        db.delete("puntuaciones", "_id=" + id, null);
        db.close();
    }
 
    //Recuperar solo una puntuacion. No sé si lo usaré
    public Puntuaciones recuperarPuntuacion(int id) {
        SQLiteDatabase db = getReadableDatabase();
        String[] valores_recuperar = {"_id", "nombre_juego", "nombre_nivel", "puntos"};
        Cursor c = db.query("contactos", valores_recuperar, "_id=" + id,
                null, null, null, null, null); // El método query nos devolverá un Cursor que podremos recorrer para recuperar todos los registros de la base de datos
        if (c != null) {
            c.moveToFirst();
        }
        Puntuaciones puntuaciones = new Puntuaciones(c.getString(1),
                c.getString(2), c.getInt(3));
        db.close();
        c.close();
        return puntuaciones;
    }
 
    //Recuperar todas las puntuaciones
    public List<Puntuaciones> recuperarTodasLasPuntuaciones() {
        SQLiteDatabase db = getReadableDatabase();
        List<Puntuaciones> lista_puntuaciones = new ArrayList<Puntuaciones>();
        String[] valores_recuperar = {"_id", "nombre_juego", "nombre_nivel", "puntos"};
        Cursor c = db.query("puntuaciones", valores_recuperar,
                null, null, null, null, null, null);
        c.moveToFirst();
        do {
            Puntuaciones puntuaciones = new Puntuaciones(c.getString(1),
                    c.getString(2), c.getInt(3));
            lista_puntuaciones.add(puntuaciones);
        } while (c.moveToNext());
        db.close();
        c.close();
        return lista_puntuaciones;
    }
}

Hago el insert en otra clase:
1
bdjuego.insertarPuntuaciones(nombre_juego_recuperado, nombre_nivel_recuperado, puntuacion_recuperada);

Y al consultar todas las inserciones me sale lo siguiente en el logcat:
https://gyazo.com/18cd89ac69b41db86a63abac0a93712e
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 112
Bronce
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

El autoincrement de mi columna id no funciona

Publicado por Yamil Bracho (100 intervenciones) el 19/06/2016 04:58:56
Que metodoe estas usando para recuperar la informacion ? En el metodo recuperarTodasLasPuntuaciones, a pesar de que traes el id, en el constructor de la clase puntuaciones no lo usas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar