2013-05-06 88 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要告诉您需要更新哪一行。

相关问题