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

Android 第一次调用活动时在sqlite db中插入数据,再次返回活动时停止插入或再次调用活动,android,sqlite,android-activity,Android,Sqlite,Android Activity,在我的活动表单中,我在sqlite中输入了事件,但当我返回此活动或再次执行此活动时,在sqlite中输入了数据。 我检查我的数据库文件是否充满重复或相同的数据。 如何防止反复输入在sqlite中输入的数据 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.acti

在我的活动表单中,我在sqlite中输入了事件,但当我返回此活动或再次执行此活动时,在sqlite中输入了数据。 我检查我的数据库文件是否充满重复或相同的数据。 如何防止反复输入在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();
    }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u日历);
MySQLiteHelper db=新的MySQLiteHelper(此);
//在数据库中添加事件
db.addEvent(新日历事件(“生日”、“2016-01-15”、“位置屋”);
db.addEvent(新日历事件(“生日”、“2016-01-15”、“位置屋”);
db.addEvent(新日历事件(“生日”、“2016-01-18”、“位置屋”);
db.addEvent(新日历事件(“移动计算”、“2015-12-10”、“地点-学院”);
db.addEvent(新日历事件(“2015年12月31日”、“2015年12月31日”、“聚会地点”);
//拿到所有的书
List=db.getAllEvent();
CalendarEvent.event_calendar_arr=new ArrayList();
CalendarEvent.event\u calendar\u arr.addAll(列表);
{来自主活动的onCreate方法和来自MySqliteHelper类的addEvent方法}
public void addEvent(CalendarEvent CalendarEvent){
Log.d(“addEvent”,calendarEvent.toString());
//获取对可写数据库的引用
SQLiteDatabase db=this.getWritableDatabase();
//创建ContentValues以添加键“column”/value
ContentValues=新的ContentValues();
value.put(KEY\u EVENT\u NAME,calendarEvent.getEventName());//获取事件名称
value.put(KEY\u EVENT\u DATE,calendarEvent.getEventDate());//获取事件日期
value.put(KEY_EVENT_DESC,calendarEvent.getEventDesc());//get EVENT_DESC
//在事件表中插入值
db.insert(EVENT_TABLE,null,values);//键/值->键=列名/值=列值
//(表,nullColumnHack,值)
//接近
db.close();
}

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

您可以在
SharedReferences
中保存一个值,您已经将该项插入到数据库中。您可以想象
SharedReferences
像一个表一样,非常容易访问和使用。要查看它,您可以按照Android开发者指南进行操作

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

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

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

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
}

真的有必要在每次创建活动时都插入相同的事件吗?然后使用
SharedReferences
来存储您已经插入的值。代码示例是@ρƏσѕρєK编写的内容。但是如果我想输入新的内容,它也会运行data@user2222:如果要插入数据,则需要删除清除的使用
editor.remove(insertedInDB);editor.commit();