我正在学习android并建立一个相当大的项目。 我的目标是让用户在 MainActivity 中更改其电子邮件地址 onClick ,但我无法弄清楚如何更改数据库中的值。
我知道这应该是一回事:
db.update(TABLE_NAME, cv, where, value);
问题是数据库是在SQLiteHandler类中定义的,但我无法弄清楚如何使用相同的" db "在" 更新"码。我一直在无法解析方法'更新(java.lang.String,android.content.ContentValues,java.lang.String,java.lang.String [])' on db.update 。
我试过复制
SQLiteDatabase db = this.getWritableDatabase();
到我的 MainActivity ,但此时我已经迷路了。
我关注注册系统this tutorial。
到目前为止我的代码:
private static final String TABLE_NAME = "email";
btnChangemail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
db = new SQLiteHandler(getApplicationContext());
HashMap<String, String> user = db.getUserDetails();
String email1 = user.get("email");
String s1 = etChangemeil.getText().toString();
ContentValues cv = new ContentValues();
cv.put(user.get("email"), s1);
String where = (user.get("email")) ;
String[] value = { email1 };
db.update(TABLE_NAME, cv, where, value);
}
});
致以最诚挚的问候,
丹
答案 0 :(得分:1)
来自文档:
更新数据库中行的便捷方法。
mul
参数
table =要更新的表 values =从列名到新列值的映射。 null是将转换为NULL的有效值
whereClause =更新时要应用的可选WHERE子句。传递null将更新所有行。
whereArgs =你可以在where子句中包含?s,它将被whereArgs中的值替换。这些值将绑定为字符串。
您可以调用此方法并更新表中的行
long
你说你得到的getWriteableDatabase()无法解析,试试这样。
创建一个扩展SQLiteOpenHolper的类,并创建更新删除和插入的方法,以便您的Db操作足够灵活,您可以从任何地方调用它们,请参阅下面的链接 Link。