तालिका में एक नया कॉलम जोड़ने के लिए जिसका आपको उपयोग करने की आवश्यकता है ALTER
। Android में आप अंदर नया कॉलम जोड़ सकते हैं onUpgrade()
।
आप आश्चर्यचकित हो सकते हैं कि onUpgrade()
नया कॉलम कैसे जोड़ेगा?
जब आप एक उपवर्ग लागू करते हैं SQLiteOpenHelper
, तो आपको सुपरक्लास कंस्ट्रक्टर को कॉल करने की आवश्यकता होती है: super(context, DB_NAME, null, 1);
आपके क्लास कंस्ट्रक्टर में। वहां मैंने 1
संस्करण के लिए पारित किया है।
जब मैंने संस्करण 1
को ऊपर ( 2
या अधिक) में बदल दिया , onUpgrade()
तो आह्वान किया जाएगा। और एसक्यूएल संशोधनों को निष्पादित करें जो मैं करने का इरादा रखता हूं। संस्करण बदलने के बाद मेरा वर्ग निर्माता:
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, 2);//version changed from 1 to 2
}
एसक्यूएल संशोधन इस तरह की जाँच करता है, सुपरक्लास कंस्ट्रक्टर स्टोर किए गए SQLite db फ़ाइल के संस्करण की तुलना उस संस्करण से करता है जिसे मैंने पास किया था super()
। यदि ये (पिछले और अब) संस्करण संख्या भिन्न हैं, onUpgrade()
तो इनवॉइस हो जाता है।
कोड इस तरह दिखना चाहिए:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// add new columns to migrate to version 2
if (oldVersion < 2) {
db.execSQL("ALTER TABLE " + TABLE_NAME + "ADD COLUMN school VARCHAR(250)");
}
// add new columns to migrate to version 3
if (oldVersion < 3) {
db.execSQL("ALTER TABLE " + TABLE_NAME + "ADD COLUMN age INTEGER");
}
}