SQLite更新查询Android

问题描述 投票:10回答:7

该表包含4列:rowID,word,defintition,group_id

我想改变某一行的词和定义。所以这是我的代码(word是一个对象,其中存储了单词,definition,id和group_id)

   ContentValues values = new ContentValues();
    values.put(KEY_WORD, word.getWord());
    values.put(KEY_DEFINITION, word.getDefinition());
    db.update(TABLE_WORDS, values, KEY_ID, new String [] {String.valueOf(word.getID())});

任何人都可以告诉我为什么它只创建一个新行而不是更改给定ID下的行?

java android sql
7个回答
1
投票

@Digvesh有正确的想法,但由于this limitation,将int转换为String以用作选择arg将无法正常工作。而是这样做:

// assume: SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(KEY_WORD, word.getWord());
values.put(KEY_DEFINITION, word.getDefinition());
int rowsUpdated = db.update(TABLE_WORDS, values, KEY_ID + "=" + word.getID(), null);

1
投票

这项工作对我来说,而db.rawquery不起作用。

输出查询

String qu="UPDATE "+ DATABASE_TABLE_DATA + " SET "+isbookmark+" = "+status+" WHERE id = "+uid+";";
db.execSQL(qu);

output query :
UPDATE tabel_data SET `isbookmark` = 1 WHERE id = 2720271;

0
投票

使用LIKE而不是=运算符。

SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_NAME, contact.getName());
        values.put(KEY_DATE, contact.getDate());

        // updating row
        return db.update(TABLE_CONTACTS, values, KEY_ID + " LIKE ?",
                new String[] { String.valueOf(contact.getID()) });

0
投票

use this link它将帮助您更新SQLite数据库中的查询


-2
投票

你可以尝试使用db.rawQuery,即

db.rawQuery("UPDATE "+ TABLE_WORDS + " SET "+ KEY_WORD + " = '"+word.getWord()+"' ,"+KEY_DEFINITION+"= '"+word.getDefinition()+ "' WHERE " + KEY_ID + " = "+word.getID(), null);

在这里,您不需要创建任何ContentValues

herehere是详细信息

© www.soinside.com 2019 - 2024. All rights reserved.