मैं एंड्रॉइड में एक साधारण डेटाबेस बना रहा हूं। मेरे कोड को एक बार निष्पादित करने के बाद मैं नई तालिका जोड़ना चाहता हूं। अब, जब भी मैं EventDataSqlHelper क्लास में अपना ऑनक्रेट() विधि बदलने की कोशिश करता हूं, तो मेरा ऐप क्रैश हो जाता है।ऐप के बाद डेटाबेस में नई तालिका जोड़कर
शायद यह है क्योंकि SQLiteOpenHelper
से जुड़ा हुआ है केवल तब ही निष्पादित किया जाता है जब ऐप पहली बार चलता है और हम इसमें और संशोधन नहीं कर सकते हैं।
मैंने नई तालिका जोड़ने के लिए एक अलग फ़ंक्शन लिखने का भी प्रयास किया। यह पहले निष्पादन पर पूरी तरह से काम करता था। लेकिन दूसरी खोज के बाद से यह अपने पिछले डेटाबेस को ओवरराइट कर देगा, इसलिए यह ऐप को क्रैश करने का कारण बनता है।
डेटाबेस डेटाबेस में नई टेबल जोड़ने के लिए कोई तरीका है यदि डेटाबेस पहले से ही बनाया गया है?
package org.example.sqldemo;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
import android.util.Log;
/** Helper to the database, manages versions and creation */
public class EventDataSQLHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "events.db";
private static final int DATABASE_VERSION = 1;
// Table name
public static final String TABLE = "events";
// Columns
public static final String TIME = "time";
public static final String TITLE = "title";
public EventDataSQLHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table " + TABLE + "(" + BaseColumns._ID
+ " integer primary key autoincrement, " + TIME + " integer, "
+ TITLE + " text not null);";
Log.d("EventsData", "onCreate: " + sql);
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}