在我的活动表格中,我在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();
}
答案 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。
但是你应该认为,如果确实有必要,每次创建活动时都会插入相同的条目。