अपने प्रोजेक्ट में, मैं डेटा को स्थानीय डेटाबेस में संग्रहीत कर रहा हूँ। उसके लिए मैं रूम लाइब्रेरी का उपयोग कर रहा हूँ। Android प्रलेखन के अनुसार मैंने एक इकाई वर्ग, एक सार डेटाबेस वर्ग, एक दाओ इंटरफ़ेस बनाया है। मैंने डेटा को सफलतापूर्वक संग्रहीत और पुनर्प्राप्त किया है।

लेकिन अब मैं इकाई (मॉडल क्लास) में एक फ़ील्ड जोड़ना चाहता हूं। उस वर्ग को अद्यतन करने के बाद और जब मैं डेटाबेस में डेटा सहेज रहा हूं, यह क्रैश हो रहा है। यह Dao_Impl वर्ग में कुछ त्रुटि दिखाता है। वास्तव में यह एक स्वतः उत्पन्न वर्ग है। मैं इस त्रुटि को कैसे हल करूं?

क्या कोई इस मुद्दे को हल करने में मेरी मदद कर सकता है? अग्रिम में धन्यवाद।

0
Sathyan 29 सितंबर 2020, 12:40

2 जवाब

सबसे बढ़िया उत्तर

तालिका संरचना जैसे डेटा हेरफेर भाषा (डीएमएल) में किसी भी बदलाव के लिए आपको एक माइग्रेशन रणनीति प्रदान करनी होगी

Room.databaseBuilder(getApplicationContext(), MyDb.class, "YOUR_DATABASE_NAME")
    .addMigrations(MIGRATION_1_2).build();

static final Migration MIGRATION_1_2 = new Migration(1, 2) {
    @Override
    public void migrate(SupportSQLiteDatabase database) {
        database.execSQL("ALTER TABLE YOUR_TABLE_NAME ADD COLUMN YOUR_NEW_COLUMN_NAME TEXT");
    }
};

यहां 1 आपका पुराना डेटाबेस संस्करण है और 2 वर्तमान डेटाबेस संस्करण है। अपने निकाय वर्ग में फ़ील्ड जोड़ना न भूलें।

1
Anisuzzaman Babla 29 सितंबर 2020, 14:00

आपको अपने डेटाबेस के लिए माइग्रेशन लिखना होगा। https://developer.android.com/training/data -स्टोरेज/रूम/माइग्रेटिंग-डीबी-संस्करण

0
mohsen 29 सितंबर 2020, 12:56