を自動インクリメントしません:ID SQLiteの私はこのコードを持っている
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 NOT NULL, nombre_juego TEXT NOT NULL, nombre_nivel TEXT NOT NULL, puntos INTEGER NOT NULL, UNIQUE(_id, 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;
}
}
をしかし、idは自動インクリメントしない理由を私は知らないとcolum IDとcolumのnombre_nivelはユニークですが、デシベルは私が持つデータを挿入できるように同じ名前...問題は何ですか?
これだけです!どうもありがとう! –
しかし、IDは常に0です。https://gyazo.com/18cd89ac69b41db86a63abac0a93712e –
私はそれを試して、うまく動作します。既存のテーブルを削除して再度作成するようにしてください。あなたはそれをチェックするためにデータベースを引き出すことができます。 – m0skit0