Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Sqlite仅更新第一行_Java_Android_Sql_Android Sqlite - Fatal编程技术网

Java Android Sqlite仅更新第一行

Java Android Sqlite仅更新第一行,java,android,sql,android-sqlite,Java,Android,Sql,Android Sqlite,我只需要更新特定sql查询命令的第一行 我的代码是: SQLiteDatabase db = this.getWritableDatabase(); String strSQL = "UPDATE table SET column = something WHERE name = john AND age = 10"; db.execSQL(strSQL); 我有5个结果,它们的标准是name=john和10岁 这可以更新最后一项,但是我希望它只更新WHERE子句的第一行结果

我只需要更新特定sql查询命令的第一行

我的代码是:

SQLiteDatabase db = this.getWritableDatabase();
    String strSQL = "UPDATE table SET column = something WHERE  name = john AND age = 10";
    db.execSQL(strSQL);
我有5个结果,它们的标准是name=john和10岁

这可以更新最后一项,但是我希望它只更新WHERE子句的第一行结果。这怎么可能呢?

试试这个:

String strSQL = "UPDATE table SET column = something WHERE id IN (SELECT id FROM table WHERE name = john AND age = 10 LIMIT 1)";

如果id是PK,请重试

UPDATE table 
SET column = something 
WHERE id = (SELECT min(t2.id) 
            FROM table t2 
            WHERE t2.name = 'john' AND t2.age = 10)
第一: 在本例中,如果只想更新第一行,则在表中再添加一个参数。它将帮助您找到唯一的记录

第二: 不要像这样使用更新查询

    String strSQL = "UPDATE table SET column = something WHERE  name = john AND age = 10";

改为这样做

最好使用一个唯一的列来标识您的用户,并更新第一个项目游标。moveToFirst;我应该已经为每个用户提供了唯一的id,但我只是在我的问题中提供了一个示例。是否有一种方法可以从一行更新行,而不是创建游标并更新第一行?然后使用limit,就像答案所说的那样不起作用…不要编写原始查询,使用limit查找项,然后使用yourdb.updatetablename、contentvalues、where、where、Wherergs[]要像这样进行更新,android.database.sqlite.SQLiteException:near LIMIT:语法错误代码1:在sqlite中使用带更新的LIMIT需要创建sqlite3.c合并的自定义版本,并在sqlite3-src-XXXXXX.zip发行版中向配置脚本传递-启用更新限制,使用打开SQLITE\u ENABLE\u UPDATE\u DELETE\u LIMIT的特定选项编译,顺便说一句。可能不是android提供的选项。@MoDev我修改了我的答案。不要编写原始查询,使用LIMIT查找该项,然后使用yourdb.updatetablename、contentvalues、where、where rgs[]进行更新,我相信它是有效的!但是,我有另一个问题,它阻止了应用更改。谢谢你的解决方案。