2013-01-03 7 views
7

Ritengo che le linee guida per gli sviluppatori Android relative al salvataggio dei dati in SQLite siano davvero carenti. Sono confuso su quale sia la linea guida generale quando si tratta di più tabelle.Confuso riguardo a SQLiteOpenHelper e creazione di più tabelle

Attualmente ho due gestori che espongono (CRUD) due diversi gruppi di entità all'interfaccia utente.

Do I:

Creare uno SQLiteOpenHelper classe privata all'interno di ogni Manager. Ogni Helper avrà il proprio onCreate per la propria TABLE?

o

creare un unico SQLiteOpenHelper classe pubblica che crea sia il tavolo di?

Non vedo alcun chiaro vantaggio nell'usare l'uno sopra l'altro, ma vedo che vengono utilizzati entrambi. Cosa dice Android di questo?

+1

devi seguire questa opzione. Creare un singolo SQLiteOpenHelper di classe pubblica che crea sia TABLE? – itsrajesh4uguys

risposta

7

Utilizzare i seguenti codici per creare più tabelle (ora ho creato due tabelle). ho fatto il codice per la creazione e l'inserimento. anche ..

import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

public class MyDB { 
    public static final String KEY_ROWID = "_id"; 
     public static final String KEY_FIRSTNAME = "ID"; 
     public static final String KEY_LASTNAME = "CS"; 
     public static final String KEY_DESIGNATION = "CN"; 
     public static final String KEY_DN = "DN"; 

     private static final String TAG = "MyDB";  
     private static final String DATABASE_NAME = "test.db";  
     private static final int DATABASE_VERSION = 1; 

     private static final String DATABASE_CREATE_ValidateUser_DriverInfo = 
      "create table tabletest1 (_id integer primary key autoincrement, " 
      + "ID text not null, CS text not null,CN text not null,DN text not null);"; 

     private static final String DATABASE_CREATE_ValidateUser_TripInfo = 
       "create table tabletest2 (_id integer primary key autoincrement, " 
       + "TI text not null, PU text not null,LN text not null,FN text not null,Origin varchar not null,De text not null);"; 


     private Context context; 
     private DatabaseHelper DBHelper; 
     private SQLiteDatabase db; 

     public MyDB(Context ctx) 
     { 
      this.context = ctx; 
      DBHelper = new DatabaseHelper(context); 
     } 

     private static class DatabaseHelper extends SQLiteOpenHelper 
     { 
      DatabaseHelper(Context context) 
      { 
       super(context, DATABASE_NAME, null, DATABASE_VERSION); 
      } 

      @Override 
      public void onCreate(SQLiteDatabase db) 
      { 
       db.execSQL(DATABASE_CREATE_ValidateUser_DriverInfo); 
       db.execSQL(DATABASE_CREATE_ValidateUser_TripInfo); 
      } 

      @Override 
      public void onUpgrade(SQLiteDatabase db, int oldVersion, 
            int newVersion) 
      { 
       Log.w(TAG, "Upgrading database from version " + oldVersion 
         + " to " 
         + newVersion + ", which will destroy all old data"); 
       db.execSQL("DROP TABLE IF EXISTS Employee"); 
       onCreate(db); 
      } 
     } 


     public MyDB open() throws SQLException 
     { 
      db = DBHelper.getWritableDatabase(); 
      return this; 
     } 

     //---closes the database---  
     public void close() 
     { 
      DBHelper.close(); 
     } 


     public long insertTitle(ContentValues initialValues,String TableName) 
     { 


      return db.insert(TableName, null, initialValues); 
     } 




} 

Utilizzare il seguente codice per inserire i dati dall'attività richiesta.

MyDB mmdb=new MyDB(getBaseContext()); 
       mmdb.open(); 

initialValues = new ContentValues(); 
          initialValues.put("ID", ID); 
          initialValues.put("CS", CS); 
          initialValues.put("CN", CN); 
          initialValues.put("DN", DN); 



         mmdb.insertTitle(initialValues,"tabletest1"); 

mmdb.close(); 
+0

si consiglia di creare più tabelle all'interno dello stesso DB anziché di più DB, anche se non vi è alcuna connessione tra queste tabelle? –

Problemi correlati