2013-01-03 9 views
7

मुझे लगता है कि SQLite में डेटा सहेजने के संबंध में एंड्रॉइड डेवलपर दिशानिर्देश वास्तव में कमी कर रहे हैं। जब मैं एकाधिक तालिकाओं की बात करता हूं तो सामान्य दिशानिर्देश क्या है, इस बारे में उलझन में हूं।SQLiteOpenHelper के बारे में उलझन में और कई तालिकाओं को बनाने

मेरे पास वर्तमान में दो प्रबंधक हैं जो यूआई को दो अलग-अलग सेटों का खुलासा करते हैं (सीआरयूडी)।

क्या मुझे:

प्रत्येक प्रबंधक के अंदर एक निजी वर्ग SQLiteOpenHelper बनाएँ। प्रत्येक हेल्पर के पास अपने स्वयं के टेबल के लिए क्रिएट होगा?

या

एक भी सार्वजनिक वर्ग SQLiteOpenHelper कि दोनों टेबल के बनाता है बनाएँ?

मुझे दूसरे के ऊपर एक का उपयोग करने के लिए कोई स्पष्ट लाभ नहीं दिख रहा है, लेकिन मुझे लगता है कि उनमें से दोनों का उपयोग किया जा रहा है। एंड्रॉइड इस बारे में क्या कहता है?

+1

आपको इस विकल्प का पालन करना होगा। एक एकल सार्वजनिक वर्ग SQLiteOpenHelper बनाएं जो दोनों टेबल बनाता है? – itsrajesh4uguys

उत्तर

7

एकाधिक टेबल बनाने के लिए कृपया निम्नलिखित कोड का उपयोग करें (मैंने अब दो टेबल बनाए हैं)। मैंने बनाने और डालने के लिए कोड किया है। भी ..

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); 
     } 




} 

अपनी आवश्यक गतिविधि से डेटा डालने के लिए निम्न कोड का उपयोग करें।

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

क्या यह एकाधिक डीबी के बजाय एक ही डीबी के भीतर कई तालिकाओं को बनाने की अनुशंसा की जाती है, भले ही उन तालिकाओं के बीच कोई कनेक्शन न हो? –

संबंधित मुद्दे