我正在与下面给出的课程一起工作。我已经根据需要制作了setter,getter和构造函数。
public class Contact {
int ID;
String Name;
String Email;
String Password;
String DateofBirth;
String Address;
String PhoneNumber;
//这是我的DatabaseHandler.java文件
public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "contactsManager";
private static final String TABLE_CONTACTS = "contacts";
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_EMAIL="email";
private static final String KEY_PASSWORD="password";
private static final String KEY_DOB = "dob";
private static final String KEY_ADDRESS = "address";
private static final String KEY_PH_NO = "phone_number";
我正在更新一封电子邮件中的密码,但是该应用程序崩溃了。以下代码是从该论坛上学习的,并且也会崩溃。
public void updatePassword(Contact contact){
SQLiteDatabase db=this.getWritableDatabase();
String sql="SELECT KEY_ID FROM " +TABLE_CONTACTS + "KEY_EMAIL"+"=?";
db.rawQuery("UPDATE"+ TABLE_CONTACTS +" SET " +
KEY_PASSWORD+"="+contact.getPassword()+"WHERE"+
KEY_EMAIL+"=?",new String[]{contact.getEmail()});
}
答案 0 :(得分:0)
尝试做:-
public void updatePassword(Contact contact){
SQLiteDatabase db=this.getWritableDatabase();
db.rawQuery("UPDATE " + TABLE_CONTACTS +" SET " +
KEY_PASSWORD+"=? WHERE "+
KEY_EMAIL+"=?",new String[]{contact.getPassword(),contact.getEmail()});
}
这将在UPDATE关键字之后和WHERE关键字之前添加空间,并且具有两个绑定变量的参数。不需要sql变量,它什么也不做。
答案 1 :(得分:0)
public void updatePassword(String email, String password){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_PASSWORD, password);
db.update(TABLE_CONTACTS, values, KEY_EMAIL+" = ?",new String[] { email });
db.close();
}