2013-05-06 66 views
0

我目前正在開發一個Android應用程序。該數據庫有1列只有名稱的內容。這裏是代碼:使用單個字段更新數據庫

public long insert(String content){ 

    ContentValues contentValues = new ContentValues(); 
    contentValues.put(KEY_CONTENT, content); 
    return sqLiteDatabase.insert(MYDATABASE_TABLE, null, contentValues); 
} 

如何爲該數據庫中的特定列(根據其索引)進行更新?

+0

如果這確實是唯一的列,並且您沒有id列,那麼您遇到了問題。 – 2013-05-06 16:19:47

+0

我曾經放過一個_id列,但每次應用程序運行時總會強行加入。在嘗試了幾個解決方案之後,唯一能解決問題的解決方案是隻生成一列數據庫 – 2013-05-06 16:23:49

+0

沒有id列,除了列的內容外,沒有任何內容可以標識該行。除非你需要排序,否則數據庫表中沒有這樣的順序,所以你不能「更新第三行」。 – 2013-05-06 16:26:24

回答

1
db.update 
(
    MYDATABASE_TABLE, contentValues , ID_FIELD_CONST + " = ?", 
    new String[] { idValue } 
); 
+0

謝謝你的回答,我有一個問題。 idValue是要替換該列中的舊數據的數據,對嗎? – 2013-05-06 16:19:35

+0

不,這是您用來查找要更新的行的數據。實際更新的唯一值是contentValues中的值。因此,如果添加2列數據,那麼這2列將被更新,如果添加1,則1將被更新,另一列將保持不變。 – bclymer 2013-05-06 16:22:45

+0

我明白了。所以,假設我想更新索引號爲3的列。索引號將通過「ID」檢索更新方法如下: public boolean updateContent(long ID) { ContentValues args =新的ContentValues(); args.put(KEY_CONTENT,content); return db.update ( MYDATABASE_TABLE,args,ID_FIELD_CONST +「=」, new String [] {ID} ); } 是嗎? – 2013-05-06 16:34:05

0

您可以使用:

ContentValues cv = new ContentValues(); 
cv.put(KEY1,value1); 
cv.put(KEY2,value2); 
//... all the fields you want to update 
String where = KEY_CONTENT + " = " + value; 
db.update(table_name,cv,where,null); 

KEY1,KEY2 ...你要更新 值1字段的名稱,值2 ...你想要的字段的新值更新 其中String要告訴您需要更新哪一行。

相關問題