Autore Topic: Problema gestione 2 tabelle con check alla main  (Letto 609 volte)

Offline waterseven

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    sensation xe
Problema gestione 2 tabelle con check alla main
« il: 13 Maggio 2012, 10:37:16 CEST »
0
Salve, ho un problema sto creando un programma che utilizza un database con all'interno 2 tabelle. Ho realizzato un check (esiste o no) per ogni tabella ma il secondo check mi fa crashare il programma.
Incollo qui il codice e il relativo logcat



Questo viene usato per la creazione delle d e delle due tabelle all'avvio del programma e funziona

Codice: [Seleziona]
public static class GameOpts {
        public static final String NAME= "gameopts"; 
        public static final String ID= "id"; 
        public static final String COL_VID = "vidscreen";
}
public static class GameTable { 
        public static final String NAME= "storia"; 
        public static final String ID= "id"; 
    public static final String COL_NOMEG1 = "nguno"; 
    public static final String COL_PUNTIG1 = "pguno"; 
    public static final String COL_NOMEG2 = "ngdue"; 
    public static final String COL_PUNTIG2 = "pgdue"; 
    public static final String COL_NOMEG3 = "ngtre"; 
    public static final String COL_PUNTIG3 = "pgtre"; 
    public static final String COL_NOMEG4 = "ngqtt"; 
    public static final String COL_PUNTIG4= "pgqtt"; 
    public static final String COL_SETWIN = "setwin"; 


public BurracoPointDbHelp(Context context) { 
         
    super(context, DB_NAME, null, DB_VERSION); 
            // Android will look for the database defined by DB_NAME 
            // And if not found will invoke your onCreate method 
    this.db = this.getWritableDatabase(); 


       


@Override
public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
       
          db.execSQL(String.format("CREATE TABLE %s (%s INTEGER PRIMARY KEY,%s TEXT, %s TEXT, %s TEXT, %s TEXT, %s TEXT, %s TEXT, %s TEXT, %s TEXT, %s int)",GameTable.NAME,GameTable.ID, GameTable.COL_NOMEG1,GameTable.COL_PUNTIG1, GameTable.COL_NOMEG2, GameTable.COL_PUNTIG2, GameTable.COL_NOMEG3,GameTable.COL_PUNTIG3, GameTable.COL_NOMEG4, GameTable.COL_PUNTIG4, GameTable.COL_SETWIN)); 
          db.execSQL(String.format("CREATE TABLE %s (%s INTEGER PRIMARY KEY,%s int)",GameOpts.NAME,GameOpts.ID, GameOpts.COL_VID)); 
               
}



Questo è il codice dei check:
Codice: [Seleziona]
          public boolean tablecheck(){
                   
                    String sql = "SELECT * FROM storia";
                Cursor cursor = db.rawQuery(sql, null);
                    if (cursor.getCount() > 0) {
                        return true;
                   }
                   
                    return false;
                   
            }
         
         
          public boolean vidcheck(){
                   
                    String sql = "SELECT * FROM gameopts";
                Cursor cur = db.rawQuery(sql, null);
                    if (cur.getCount() > 0) {
                        return true;
                   }
                   
                    return false;
                   
            }
       



Qui il codice del main :

Codice: [Seleziona]
public class xxxxMain extends Activity  implements OnCompletionListener {
    /** Called when the activity is first created. */
        xxxxDbHelp dm;
        SQLiteDatabase db;
       
       
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.dm = new xxxxDbHelp(this);
            boolean check=dm.vidcheck();
            if(check==true){
                               
                   
                        Intent intent = new Intent(this, xxxx.class);
                startActivity(intent);
                finish();
               
                }
                else{
                       
                        setContentView(R.layout.splash);
                VideoView vd = (VideoView) findViewById(R.id.video);
                vd.setVideoPath("android.resource://" + getPackageName() + "/" +R.raw.intro);
                vd.start();
                vd.setOnCompletionListener(this);
               
                }
       
       
       
       
       
       
       
    }

        public void onCompletion(MediaPlayer mp) {
                // TODO Auto-generated method stub
               
                Intent intent = new Intent(this, xxxx.class);
        startActivity(intent);
        finish();
               
        }
       


I nomi delle class son corretti ( ma sono stati offuscati). Il problema è che se io invece del vidcheck metto tablecheck funziona tutto invece viceversa mi crasha e restituisce questo logcat:


Codice: [Seleziona]
05-13 08:15:11.730: I/SqliteDatabaseCpp(1425): sqlite returned: error code = 1, msg = no such table: gameopts, db=/data/data/com.android.xxxxx/databases/xxxxx.db
05-13 08:15:11.810: D/AndroidRuntime(1425): Shutting down VM
05-13 08:15:11.810: W/dalvikvm(1425): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
05-13 08:15:11.841: E/AndroidRuntime(1425): FATAL EXCEPTION: main



Grazie in anticipo per l'aiuto!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema gestione 2 tabelle con check alla main
« Risposta #1 il: 13 Maggio 2012, 11:39:15 CEST »
0
Per vedere se una tabella tableName esiste:

Codice (Java): [Seleziona]
    Cursor cursor = db.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+tableName+"'", null);
    if(cursor!=null) {
        if(cursor.getCount()>0) {
            return true;
        }
    }
    return false;


Tratto da How does one check if a table exists in an Android SQLite database? - Stack Overflow
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline waterseven

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    sensation xe
Re:Problema gestione 2 tabelle con check alla main
« Risposta #2 il: 13 Maggio 2012, 11:54:59 CEST »
0
Grazie per l'aiuto , ma il problema non è il codice dei check , perchè il check tablename funziona testato in altre funzioni del programma e provato anche nel main.
Credo sia un errore a livello di inizializzazione delle tabelle , per altro ho provato il check che mi hai dato ma mi restituisce sempre true....