@TheReader सही है की तुलना में "CREATE TABLE IF NOT EXISTS..."
बयान का उपयोग सुनिश्चित करें। मैं सभी तालिकाओं के लिए एक एकल SQLiteOpenHelper पसंद करता हूं, यहां मैं जो करता हूं: SQLiteOpenHelper subClass के निर्माता को "टेबल निर्माण" वर्गों की एक सूची पास करें, फिर ऑनक्रेट फ़ंक्शन में प्रत्येक तालिका बनाने के लिए सूची को पुन: सक्रिय करें। तो मेरे SQLiteOpenHelper उपवर्ग इस तरह sth दिखता है:
public ModelReaderDbHelper(Context context, List<String> createSQLs, List<String> deleteSQLs){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.TABLE_CREATION_SQLS = createSQLs;
this.TABLE_DELETE_SQLS = deleteSQLs;
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
for(String oneCreation : TABLE_CREATION_SQLS){
sqLiteDatabase.execSQL(oneCreation);
}
}
लेकिन वह एक और समस्या आता है: एक नई तालिका जोड़ने के बाद, और स्थापित एक मौजूदा वर्ष एक के साथ एप्लिकेशन का नया संस्करण स्थापित करते हैं, नई तालिका नहीं होगा बनाया जाना चाहिए, क्योंकि पुराने डेटाबेस का अस्तित्व ऑनक्रेट फ़ंक्शन को कॉल करने से रोक देगा। तो उपयोगकर्ता को पहले ऐप को अनइंस्टॉल करना होगा, और ऐप को पूरी तरह इंस्टॉल करना होगा। DATABASE_VERSION मदद करता है, यह एंड्रॉयड onCreate समारोह पर अमल नहीं होगा लगते हैं तभी एक ही नाम और एक ही DATABASE_VERSION
ठीक, धन्यवाद के साथ एक existin डेटाबेस है, तो आप प्रत्येक के लिए एक होने के sideeffect जानते हो तालिका? या केवल एक फ़ाइल को संपादित करने के लिए है? –
संपादित उत्तर की जांच करें –
धन्यवाद यह काफी व्याख्यात्मक है, मैं asap पढ़ूंगा! : डी: डी –