插入stement

时间:2017-03-21 08:20:19

标签: android database sqlite android-sqlite

我需要帮助如何在sqlite中实现rawquery。我需要在表中的特定行中插入记录。我搜索并发现我可以使用原始查询来实现这一点。我是sqlite的新手,不知道如何实现原始查询。我有语法错误。

这是我的代码

public void insert (String potision, String total, String curent)
{
    SQLiteDatabase db = this.getWritableDatabase();
    db.rawQuery("INSERT INTO  "+Table_Name2+" VALUES(?,?) WHERE ID = ? ", new String[] {total,curent,potision});
}

这是我的语法错误:

  

SQLiteException:接近“WHERE”:语法错误(代码1):,编译时:INSERT INTO item_counts_2 VALUES(?,?)WHERE ID =?

帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

您可以使用更新查询 ContentValues 来更新数据库中的特定行数据

SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_1, value1);
values.put(COLUMN_2, value2);
return db.update(TABLE_NAME, values, ID + " = ?",
            new String[] { String.valueOf(idValue) });

希望它会帮助你。

答案 1 :(得分:1)

您正在使用syntax error,因为您在插入内添加了where子句。

执行insert时,您要向数据库添加一行。指定行没有任何意义。

如果你要更新一行,那么where子句就可以了,因为你必须告诉他要更新的行。

同样在删除行时,where子句被广泛使用,因此您不会删除整个表。

插入:here

更新:official docs

删除:official docs

请注意,文档是指SQLite,因为您使用的是Android。

答案 2 :(得分:0)

请勿在{{1​​}}查询中使用where子句。

如果要向数据库插入新行,那么insert子句是多余的,删除它就可以正常工作。

OR,

如果要更新数据库中已存在的值,请使用where查询而不是update, 有关更多信息,请访问here