退出服务后数据库值被清除
Database values getting cleared after exiting service
我创建了一个服务,警报管理器每 5 次调用一次 secs.My 服务使用 dbHandler class 的方法来添加、更新、检查更新信息并检查数据库中数据的可用性.将数据插入 table 后,下次再次调用我的服务时仍然没有结果,相同的数据是 again.Log 服务检查和添加数据:
dbHandler onCreate:
@Override
public void onCreate(SQLiteDatabase db){
String query = "CREATE TABLE " + tableN + "(" +
column_id + " INTEGER PRIMARY KEY," +
column_name + " TEXT ," +
column_desc + " TEXT ," +
column_activity + " TEXT ," +
column_contact + " TEXT " +
");";
db.execSQL(query);
}
检查和添加数据到数据库的方法
public void add_n(nDatabse tuple) {
ContentValues values = new ContentValues();
values.put(column_id, tuple.get_id());
values.put(column_name, tuple.get_name());
values.put(column_desc, tuple.get_description());
values.put(column_activity, tuple.get_activity());
values.put(column_contact, tuple.get_contact());
SQLiteDatabase db = getWritableDatabase();
//Inserting in Database
db.insert(tableN, null, values);
//checking Entry of Database
String query = "SELECT * FROM " + tableN + " WHERE " + column_id + " = " + tuple.get_id() + " ";
Cursor c = db.rawQuery(query, null);
if (c.getCount() > 0) {
c.moveToFirst();
Log.d( " After Adding Data...",c.getString(1));}
db.close();
}
检查可用性
public boolean checkNotAvailable(nDatabse tuple) {
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + tableN + " WHERE " + column_id + " = " + tuple.get_id() + " ";
Cursor c = db.rawQuery(query, null);
//Log.d("as",toString().valueOf(tuple.get_id()));
if (c.getCount() == 0) {
Log.d("NO ENTRY", toString().valueOf(tuple.get_id()));
return true;
}
db.close();
return false;
}
从服务调用方法
//doing 5 times
dbHandler dbH = new dbHandler(this, null, null, 1);
if (dbH.checkNotAvailable(n))
dbH.add_n(n);
Log.d 每次服务调用都会重复输出
D/NO ENTRY: 0
D/ After Adding Data...: Name 1
D/NO ENTRY: 1
D/ After Adding Data...: Name 2
D/NO ENTRY: 2
D/ After Adding Data...: Name 3
D/NO ENTRY: 3
D/ After Adding Data...: Name 4
D/NO ENTRY: 4
D/ After Adding Data...: Name 5
问题是,我将 null 传递给 dbhandler 构造函数,但没有指定数据库的名称,这可能导致形成在服务停止时清除的临时数据库。
我创建了一个服务,警报管理器每 5 次调用一次 secs.My 服务使用 dbHandler class 的方法来添加、更新、检查更新信息并检查数据库中数据的可用性.将数据插入 table 后,下次再次调用我的服务时仍然没有结果,相同的数据是 again.Log 服务检查和添加数据:
dbHandler onCreate:
@Override
public void onCreate(SQLiteDatabase db){
String query = "CREATE TABLE " + tableN + "(" +
column_id + " INTEGER PRIMARY KEY," +
column_name + " TEXT ," +
column_desc + " TEXT ," +
column_activity + " TEXT ," +
column_contact + " TEXT " +
");";
db.execSQL(query);
}
检查和添加数据到数据库的方法
public void add_n(nDatabse tuple) {
ContentValues values = new ContentValues();
values.put(column_id, tuple.get_id());
values.put(column_name, tuple.get_name());
values.put(column_desc, tuple.get_description());
values.put(column_activity, tuple.get_activity());
values.put(column_contact, tuple.get_contact());
SQLiteDatabase db = getWritableDatabase();
//Inserting in Database
db.insert(tableN, null, values);
//checking Entry of Database
String query = "SELECT * FROM " + tableN + " WHERE " + column_id + " = " + tuple.get_id() + " ";
Cursor c = db.rawQuery(query, null);
if (c.getCount() > 0) {
c.moveToFirst();
Log.d( " After Adding Data...",c.getString(1));}
db.close();
}
检查可用性
public boolean checkNotAvailable(nDatabse tuple) {
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + tableN + " WHERE " + column_id + " = " + tuple.get_id() + " ";
Cursor c = db.rawQuery(query, null);
//Log.d("as",toString().valueOf(tuple.get_id()));
if (c.getCount() == 0) {
Log.d("NO ENTRY", toString().valueOf(tuple.get_id()));
return true;
}
db.close();
return false;
}
从服务调用方法
//doing 5 times
dbHandler dbH = new dbHandler(this, null, null, 1);
if (dbH.checkNotAvailable(n))
dbH.add_n(n);
Log.d 每次服务调用都会重复输出
D/NO ENTRY: 0
D/ After Adding Data...: Name 1
D/NO ENTRY: 1
D/ After Adding Data...: Name 2
D/NO ENTRY: 2
D/ After Adding Data...: Name 3
D/NO ENTRY: 3
D/ After Adding Data...: Name 4
D/NO ENTRY: 4
D/ After Adding Data...: Name 5
问题是,我将 null 传递给 dbhandler 构造函数,但没有指定数据库的名称,这可能导致形成在服务停止时清除的临时数据库。