marellanor
23/08/14, 01:36:39
La primera vez que compilo e ingreso al activity donde seteo y leo datos a la BD, me ingresa datos a la BD y los me los muestra. Cuando intento ingresar nuevamente al activity me bota la aplicación. Solo funciona (una vez) cuando le cambio la versión de la BD en el constructor.
Alguien me podría ayudar con el error?
Saludos y gracias!.
Activity
package com.paquete.juegayaprendeapp;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class ScoreJuego2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.scorejuego2);
//Acá seteo el nombre del layout
this.setTitle("Puntajes Juego 2");
Handler_sqlite helper = new Handler_sqlite(this);
TextView tv1 = (TextView) findViewById(R.id.plugarj2);
TextView tv2 = (TextView) findViewById(R.id.slugarj2);
TextView tv3 = (TextView) findViewById(R.id.tlugarj2);
//helper.abrirdb();
helper.insertarReg("pepe1", "3");
helper.insertarReg("pepe2", "2");
helper.insertarReg("pepe3", "1");
String temp[] = helper.leer();
tv1.setText(""+temp[0]);
tv2.setText(""+temp[1]);
tv3.setText(""+temp[2]);
helper.cerrardb();
}
}
Clase BaseDatos
package com.paquete.juegayaprendeapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFacto ry;
import android.database.sqlite.SQLiteOpenHelper;
import static android.provider.BaseColumns._ID;
public class Handler_sqlite extends SQLiteOpenHelper {
public Handler_sqlite(Context ctx) {
super(ctx, "Base2", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE juego2 ("+ _ID +" INTEGER PRIMARY KEY AUTOINCREMENT," +
"jugador TEXT, puntos TEXT); ";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS juego2");
onCreate(db);
}
public void insertarReg(String usr, String pnts){
ContentValues valores = new ContentValues();
valores.put("jugador", usr);
valores.put("puntos", pnts);
this.getWritableDatabase().insert("juego2", null, valores);
}
public String[] leer(){
String result[] = new String [3];
String columnas[] = {_ID, "jugador", "puntos"};
Cursor c = this.getReadableDatabase().query("juego2", columnas, null, null, null, null, null, null);
int id, iu, ip;
id = c.getColumnIndex(_ID);
iu = c.getColumnIndex("jugador");
ip = c.getColumnIndex("puntos");
int contador=0;
for(c.moveToFirst();!c.isAfterLast();c.moveToNext( )){
result[contador] = c.getString(id)+" "+c.getString(iu)+" "+c.getString(ip) +"\n";
contador++;
}
return result;
}
public void abrirdb(){
this.getWritableDatabase();
}
public void cerrardb(){
this.close();
}
}
Alguien me podría ayudar con el error?
Saludos y gracias!.
Activity
package com.paquete.juegayaprendeapp;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class ScoreJuego2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.scorejuego2);
//Acá seteo el nombre del layout
this.setTitle("Puntajes Juego 2");
Handler_sqlite helper = new Handler_sqlite(this);
TextView tv1 = (TextView) findViewById(R.id.plugarj2);
TextView tv2 = (TextView) findViewById(R.id.slugarj2);
TextView tv3 = (TextView) findViewById(R.id.tlugarj2);
//helper.abrirdb();
helper.insertarReg("pepe1", "3");
helper.insertarReg("pepe2", "2");
helper.insertarReg("pepe3", "1");
String temp[] = helper.leer();
tv1.setText(""+temp[0]);
tv2.setText(""+temp[1]);
tv3.setText(""+temp[2]);
helper.cerrardb();
}
}
Clase BaseDatos
package com.paquete.juegayaprendeapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFacto ry;
import android.database.sqlite.SQLiteOpenHelper;
import static android.provider.BaseColumns._ID;
public class Handler_sqlite extends SQLiteOpenHelper {
public Handler_sqlite(Context ctx) {
super(ctx, "Base2", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE juego2 ("+ _ID +" INTEGER PRIMARY KEY AUTOINCREMENT," +
"jugador TEXT, puntos TEXT); ";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS juego2");
onCreate(db);
}
public void insertarReg(String usr, String pnts){
ContentValues valores = new ContentValues();
valores.put("jugador", usr);
valores.put("puntos", pnts);
this.getWritableDatabase().insert("juego2", null, valores);
}
public String[] leer(){
String result[] = new String [3];
String columnas[] = {_ID, "jugador", "puntos"};
Cursor c = this.getReadableDatabase().query("juego2", columnas, null, null, null, null, null, null);
int id, iu, ip;
id = c.getColumnIndex(_ID);
iu = c.getColumnIndex("jugador");
ip = c.getColumnIndex("puntos");
int contador=0;
for(c.moveToFirst();!c.isAfterLast();c.moveToNext( )){
result[contador] = c.getString(id)+" "+c.getString(iu)+" "+c.getString(ip) +"\n";
contador++;
}
return result;
}
public void abrirdb(){
this.getWritableDatabase();
}
public void cerrardb(){
this.close();
}
}