2012-10-16 34 views
0

更新聯繫人我使用的SQLite在我的Android application.Other操作來維護數據庫工作正常,但Update Operation不是working.This是代碼:難度在SQLite的

public int updateContact(Contact contact,String Type) 
    { 
     int a = 0; 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 

     values.put(KEY_NAME, contact.getName()); 
     values.put(KEY_PH_NO, contact.getPhoneNumber()); 
     values.put(KEY_TIME, contact.getTime()); 
     values.put(KEY_ID , contact.getID()); 

     if(Type == "name") 
     { 
      a = db.update(TABLE_CONTACTS, values, KEY_NAME + " = ?", 
        new String[] { String.valueOf(contact.getName()) }); 
     } 

     else if(Type == "id") 
      // updating row 
      a = db.update(TABLE_CONTACTS, values, KEY_ID + " = ?", 
        new String[] { String.valueOf(contact.getID()) }); 

     else if(Type == "number") 
      // updating row 
      a= db.update(TABLE_CONTACTS, values, KEY_PH_NO + " = ?", 
        new String[] { String.valueOf(contact.getPhoneNumber()) }); 

     else if(Type == "time") 
      a= db.update(TABLE_CONTACTS, values, KEY_TIME + " = ?", 
        new String[] { String.valueOf(contact.getTime())}); 

     return a; 
    } 

請幫助我。

+0

有什麼問題?你是否遇到異常,或者數據庫沒有按照你的意願更改? – JesperB

+0

實際上,沒有任何異常,代碼編譯得很好,但我沒有得到所需的結果,即更新操作沒有對數據庫進行任何更改。 – user1726619

+0

請幫助別人。 – user1726619

回答

2

String比較總是應該使用.equals()代替==

if(Type == "name") 
...... 
else if(Type == "number") 

應改爲

if("name".equals(Type)) 
    ...... 
    else if("number".equals(Type)) 
+0

對不起,先生,但這不是問題。謝謝回覆。 – user1726619

+0

然而,你應該總是用這種方式進行字符串比較。不這樣做會導致很難發現和複製的微妙的錯誤。看看爲什麼[這裏](http://stackoverflow.com/a/995933/1319061) – JesperB

+0

「更新操作沒有對數據庫進行任何更改」,您確定更新正在被調用嗎?我強烈懷疑更新沒有被調用。順便說一句,爵士在某種程度上禁止了詞語。 – kosa

1

你爲什麼不使用這種方式:

if(Type == "name") 
    { 
     a = db.update(TABLE_CONTACTS, values, KEY_NAME + "=" + String.valueOf(contact.getName()),null); 
    } 

    else if(Type == "id") 
     // updating row 
     a = db.update(TABLE_CONTACTS, values, KEY_ID + "=" + String.valueOf(contact.getID()),null); 

    else if(Type == "number") 
     // updating row 
     a= db.update(TABLE_CONTACTS, values, KEY_PH_NO + "=" + String.valueOf(contact.getPhoneNumber()),null); 

    else if(Type == "time") 
     a= db.update(TABLE_CONTACTS, values, KEY_TIME + "=" + String.valueOf(contact.getTime()),null); 
+0

對不起,先生,問題仍然是一樣的。 – user1726619

+1

你把你的密鑰聲明爲INTEGER PRIMARY KEY嗎?此外,我認爲這是在SQLite的一些問題,如果你不聲明你的主鍵:_id –

+0

@覆蓋 \t公共無效的onCreate(SQLiteDatabase DB){ \t \t字符串CREATE_CONTACTS_TABLE = 「CREATE TABLE」 + TABLE_CONTACTS + 「(」 \t + KEY_ID +「INTEGER PRIMARY KEY」+ KEY_NAME +「TEXT」, \t \t + KEY_PH_NO +「TEXT」+ KEY_TIME +「TEXT」+「)」; \t \t db.execSQL(CREATE_CONTACTS_TABLE); \t} – user1726619