首次调用活动时在sqlite db中插入数据时,再次返回活动时停止插入或再次调用活动

时间:2015-11-18 08:09:50

标签: android sqlite android-activity

在我的活动表格中,我在sqlite中输入了事件但当我返回此活动或再次执行此活动时,再次在sqlite中输入数据。 我检查我的DB文件是否有重复或相同的数据。 如何防止一次又一次地输入在sqlite中输入的数据。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calendar);

        MySQLiteHelper db = new MySQLiteHelper(this);


        // add events in database
        db.addEvent(new CalendarEvent("Birthday", "2016-01-15", "Location-House"));
        db.addEvent(new CalendarEvent("Birthday", "2016-01-15", "Location-House"));
        db.addEvent(new CalendarEvent("Birthday", "2016-01-18", "Location House"));
        db.addEvent(new CalendarEvent("Mobile Computing", "2015-12-10", "Location- college"));
        db.addEvent(new CalendarEvent("31th December", "2015-12-31", "Party Location-House"));


        // get all books
        List<CalendarEvent> list = db.getAllEvent();
        CalendarEvent.event_calendar_arr = new ArrayList<CalendarEvent>();
        CalendarEvent.event_calendar_arr.addAll(list);

{onCreate method from main activity and addEvent method from MySqliteHelper class}

public void addEvent(CalendarEvent calendarEvent) {

        Log.d("addEvent", calendarEvent.toString());

        // get reference to writable DB
        SQLiteDatabase db = this.getWritableDatabase();

        // create ContentValues to add key "column"/value
        ContentValues values = new ContentValues();
        values.put(KEY_EVENT_NAME, calendarEvent.getEventName()); // get event_name
        values.put(KEY_EVENT_DATE, calendarEvent.getEventDate()); // get event_date
        values.put(KEY_EVENT_DESC, calendarEvent.getEventDesc()); // get event_desc

        // insert values in event table
        db.insert(EVENT_TABLE, null, values); // key/value -> keys = column names/ values = column values
        //(table, nullColumnHack, values)

        // close
        db.close();
    }

2 个答案:

答案 0 :(得分:2)

  

第一次调用活动时如何在sqlite数据库中插入数据

首次启动应用程序时,仅使用SharedPreferences执行数据库插入操作一次:

SharedPreferences prefs = PreferenceManager.
                       getDefaultSharedPreferences(getApplicationContext());

if(!prefs.contains("insertedInDB")){
   // insert in DB

  // create key in prefs
   SharedPreferences.Editor editor = prefs.edit();
   editor.putBoolean("insertedInDB", true);
   editor.commit();
}else{
   // no need to insert in db
}

答案 1 :(得分:0)

这是因为您每次都要输入活动,即创建活动。省略doulbe条目的解决方案是,检查数据库中是否已存在此条目。

您可以在SharedPreferences中保存一个值,即已将此条目插入数据库。您可以将SharedPreferences想象成一个表格,该表格非常快速且易于使用。要查看它,您可以按照Android开发人员指南here

但是你应该认为,如果确实有必要,每次创建活动时都会插入相同的条目。