我再次在这里寻求帮助,现在我将详细说明我希望有人能解决的问题:在第一个活动中onClick
执行方法插入
public class ActivityUn extends Activity {
final String PREFS_NAME = "MyPrefsFile";
final String ID = "id";
DBAdapter db = new DBAdapter(this);
public void ajouter(View v) {
db.open();
Toast.makeText(getApplicationContext(), "Données enregistrées", Toast.LENGTH_LONG).show();
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
long id = db.insertMENAGE(rm_1ts,rm_2ts,rm_3ts);
prefs.edit().putLong(ID, id).commit();
db.close();
}
第二个活动代码是:
public class ActivityDeux extends Activity {
SharedPreferences prefs2 = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
private SharedPreferences prefs;
long id = prefs.getLong(ID, 0);
DBAdapter db = new DBAdapter(this);
public void ajouter(View v) {
db.open();
db.insertMENAGE2(id,a16,b17,rm_18_1ts,rm_18_2ts,c19,d20,e21);
db.close();
}
这里插入和更新两个方法......
public long insertMENAGE(String Region, String Provence_prefecture ,StringCommune_Arrondissement) {
ContentValues initialValues = new ContentValues();
initialValues.put(col_Region,Region);
initialValues.put(col_Provence_prefecture ,Provence_prefecture);
initialValues.put(col_Commune_Arrondissement,Commune_Arrondissement);
return db.insert(MENAGE,null, initialValues);
}
在第二个活动中,我将通过完成行中的剩余列来更新同一个表:
public void insertMENAGE2(int id, int a16, int b17) {
ContentValues values = new ContentValues();
values.put(col_Type_habitat,a16);
values.put(col_Statut_occupation ,b17);
db.update(MENAGE,values,_id+"="+id, null);
}
现在,我想指出表格中最后插入的行的id ( primary key )
,
我已经找到了解决方案,但是他们不适合我的情况,因为我有其他活动更新同一张桌子
我需要指出每次有关的id
是最后一次插入。
谢谢
答案 0 :(得分:2)
编辑:
public class ActivityUn extends Activity {
final String PREFS_NAME = "MyPrefsFile";
final String ID = "id";
DBAdapter db = new DBAdapter(this);
public void ajouter(View v) {
db.open();
Toast.makeText(getApplicationContext(), "Données enregistrées", Toast.LENGTH_LONG).show();
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
long id = db.insertMENAGE(rm_1ts,rm_2ts,rm_3ts);
prefs.edit().putLong(ID, id).commit();
db.close();
}
}
公共类ActivityDeux扩展了Activity {
final String PREFS_NAME = "MyPrefsFile";
final String ID = "id";
DBAdapter db = new DBAdapter(this);
public void ajouter(View v) {
db.open();
SharedPreferences prefs2 = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
long id = prefs.getLong(ID, 0);
//update the value in the table with the id you get from Sharedpreferences
db.insertMENAGE2(id,a16,b17,rm_18_1ts,rm_18_2ts,c19,d20,e21);
db.close();
}
}
你在第二个Activity中使用2个SharedPreferences变量。第二个(你正在使用的那个)没有实例化。这将抛出NullPointer异常。 请阅读developer.google.com上有关SQLite和SharedPreferences的文档,并尝试了解代码的作用。同时尽量避免在您的代码中使用法语单词,只要来自非法语国家/地区的人必须阅读/编辑您的代码,就可能无法向他们发送。
答案 1 :(得分:1)
就像你在寻找同步工作一样。
我建议您使用只有一个值为“id”的新表
使用方法更新该值。说updatelastupdated(idofinsertedrow)
在表中插入数据时调用此方法
public long insertMENAGE(String Region, String Provence_prefecture ,StringCommune_Arrondissement)
{
ContentValues initialValues = new ContentValues();
initialValues.put(col_Region,Region);
initialValues.put(col_Provence_prefecture ,Provence_prefecture);
initialValues.put(col_Commune_Arrondissement,Commune_Arrondissement);
updatelastupdated(id) //ADD this method here..
return db.insert(MENAGE,null, initialValues);
}
现在,新表idoftheinsertedrow
单元格将始终具有您要用于完成表格中更新的id(Primary key)
。
清楚地解释你
yourtable说x
活动1插入一行id 1
活动2插入一行id 2
活动3插入一行id 3
现在您有另一个方法update()
,必须更新id 3
为此我建议另一张桌子说y
当您插入表x
时,您更新表idupdated
中的y
值
因此,idupdated
列始终会保留表x