Java 将联系人存储在数据库中后执行编辑

Java 将联系人存储在数据库中后执行编辑,java,android,eclipse,android-studio,android-database,Java,Android,Eclipse,Android Studio,Android Database,我正在修改一个应用程序,它管理与数据库交互的联系人 在应用程序中,我正在插入和删除联系人,但我正在努力实现方法,以编辑联系人并将编辑的联系人记录在数据库中 onContextItemSelected方法已就位,并且仅缺少该部分 MainActivity中的onContextItemSelected方法 public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) {

我正在修改一个
应用程序
,它管理与
数据库
交互的联系人

应用程序中
,我正在插入和删除联系人,但我正在努力实现
方法
,以
编辑联系人并将编辑的联系人记录在
数据库中

onContextItemSelected
方法已就位,并且仅缺少该部分

MainActivity中的onContextItemSelected方法

    public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case EDIT:
            // TODO: Implement editing a contact
            break;
        case DELETE:
            dbHandler.deleteContact(Contacts.get(longClickedItemIndex));
            Contacts.remove(longClickedItemIndex);
            contactAdapter.notifyDataSetChanged();
            break;
    }

    return super.onContextItemSelected(item);
    }
带有updateContact方法的DatabaseHandler类

public class DatabaseHandler extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;

private static final String DATABASE_NAME = "controleAgenda",
        TABLE_CONTACTS = "contatos",
        KEY_ID = "id",
        KEY_NAME = "nome",
        KEY_PHONE = "telefone",
        KEY_ADDRESS = "endereco",
        KEY_EMAIL = "email",
        KEY_IMAGEURI = "imageUri";

public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_NAME + " TEXT," + KEY_PHONE + " TEXT," + KEY_ADDRESS + " TEXT," + KEY_EMAIL + " TEXT," + KEY_IMAGEURI + " TEXT)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);

    onCreate(db);
}

public void createContact(Contato contato) {
    SQLiteDatabase db = getWritableDatabase();

    ContentValues values = new ContentValues();

    values.put(KEY_NAME, contato.getName());
    values.put(KEY_PHONE, contato.getPhone());
    values.put(KEY_ADDRESS, contato.getAddress());
    values.put(KEY_EMAIL, contato.getEmail());
    values.put(KEY_IMAGEURI, contato.getImageURI().toString());

    db.insert(TABLE_CONTACTS, null, values);
    db.close();
}

public Contato getContact(int id) {
    SQLiteDatabase db = getReadableDatabase();

    Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID, KEY_NAME, KEY_PHONE, KEY_EMAIL, KEY_ADDRESS, KEY_IMAGEURI }, KEY_ID + "=?", new String[] { String.valueOf(id) }, null, null, null, null );

    if (cursor != null)
        cursor.moveToFirst();

    Contato contato = new Contato(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), Uri.parse(cursor.getString(5)));
    db.close();
    cursor.close();
    return contato;
}

public void deleteContact(Contato contato) {
    SQLiteDatabase db = getWritableDatabase();
    db.delete(TABLE_CONTACTS, KEY_ID + "=?", new String[] { String.valueOf(contato.getId()) });
    db.close();
}

public int getContactsCount() {
    SQLiteDatabase db = getReadableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_CONTACTS, null);
    int count = cursor.getCount();
    db.close();
    cursor.close();

    return count;
}

public int updateContact(Contato contato) {
    SQLiteDatabase db = getWritableDatabase();

    ContentValues values = new ContentValues();

    values.put(KEY_NAME, contato.getName());
    values.put(KEY_PHONE, contato.getPhone());
    values.put(KEY_ADDRESS, contato.getAddress());
    values.put(KEY_EMAIL, contato.getEmail());
    values.put(KEY_IMAGEURI, contato.getImageURI().toString());

    int rowsAffected = db.update(TABLE_CONTACTS, values, KEY_ID + "=?", new String[] { String.valueOf(contato.getId()) });
    db.close();

    return rowsAffected;
}

public List<Contato> getAllContacts() {
    List<Contato> contacts = new ArrayList<Contato>();

    SQLiteDatabase db = getWritableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_CONTACTS, null);

    if (cursor.moveToFirst()) {
        do {
            contacts.add(new Contato(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), Uri.parse(cursor.getString(5))));
        }
        while (cursor.moveToNext());
    }
    cursor.close();
    db.close();
    return contacts;
}
}
公共类DatabaseHandler扩展了SQLiteOpenHelper{
私有静态最终int数据库_VERSION=1;
私有静态最终字符串数据库\u NAME=“controleAgenda”,
表_CONTACTS=“contatos”,
KEY_ID=“ID”,
KEY_NAME=“nome”,
KEY_PHONE=“telefone”,
KEY_ADDRESS=“endereco”,
KEY_EMAIL=“EMAIL”,
KEY_IMAGEURI=“IMAGEURI”;
公共数据库处理程序(上下文){
super(上下文、数据库名称、null、数据库版本);
}
@凌驾
public void onCreate(SQLiteDatabase db){
db.execSQL(“创建表格”+表格联系人+”(“+KEY\u ID+”整数主键自动递增“+KEY\u NAME+”文本“+KEY\u PHONE+”文本“+KEY\u地址+”文本“+KEY\u EMAIL+”文本“+KEY\u IMAGEURI+”文本)”);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
db.execSQL(“如果存在删除表”+表_联系人);
onCreate(db);
}
公共联系人(Contato Contato){
SQLiteDatabase db=getWritableDatabase();
ContentValues=新的ContentValues();
value.put(KEY_NAME,contato.getName());
value.put(KEY_PHONE,contato.getPhone());
value.put(KEY_ADDRESS,contato.getAddress());
value.put(KEY_EMAIL,contato.getEmail());
value.put(KEY_IMAGEURI,contato.getImageURI().toString());
db.插入(表_触点,空,值);
db.close();
}
公共联系人(内部id){
SQLiteDatabase db=getReadableDatabase();
Cursor Cursor=db.query(表_CONTACTS,新字符串[]{KEY_ID,KEY_NAME,KEY_PHONE,KEY_EMAIL,KEY_地址,KEY_IMAGEURI},KEY_ID+“=?”,新字符串[]{String.valueOf(ID)},null,null,null,null);
如果(光标!=null)
cursor.moveToFirst();
Contato Contato=new Contato(Integer.parseInt(cursor.getString(0)),cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4),Uri.parse(cursor.getString(5));
db.close();
cursor.close();
返回contato;
}
公共联系人(Contato Contato){
SQLiteDatabase db=getWritableDatabase();
delete(TABLE_CONTACTS,KEY_ID+“=?”,新字符串[]{String.valueOf(contato.getId())});
db.close();
}
public int getcontactscont(){
SQLiteDatabase db=getReadableDatabase();
Cursor Cursor=db.rawQuery(“选择*自”+表_联系人,空);
int count=cursor.getCount();
db.close();
cursor.close();
返回计数;
}
public int updateContact(Contato Contato){
SQLiteDatabase db=getWritableDatabase();
ContentValues=新的ContentValues();
value.put(KEY_NAME,contato.getName());
value.put(KEY_PHONE,contato.getPhone());
value.put(KEY_ADDRESS,contato.getAddress());
value.put(KEY_EMAIL,contato.getEmail());
value.put(KEY_IMAGEURI,contato.getImageURI().toString());
int rowsAffected=db.update(TABLE_CONTACTS,values,KEY_ID+“=?”,新字符串[]{String.valueOf(contato.getId())});
db.close();
返回受影响的行;
}
公共列表getAllContacts(){
列表联系人=新建ArrayList();
SQLiteDatabase db=getWritableDatabase();
Cursor Cursor=db.rawQuery(“选择*自”+表_联系人,空);
if(cursor.moveToFirst()){
做{
添加(新Contato(Integer.parseInt(cursor.getString(0)),cursor.getString(1),cursor.getString(2),cursor.getString(3),cursor.getString(4),Uri.parse(cursor.getString(5));
}
while(cursor.moveToNext());
}
cursor.close();
db.close();
返回联系人;
}
}