程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android Java SQLite rowid 基于另一列中的数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Android Java sqlite rowid 基于另一列中的数据?

开发过程中遇到Android Java sqlite rowid 基于另一列中的数据的问题如何解决?下面主要结合日常开发的经验,给出你关于Android Java sqlite rowid 基于另一列中的数据的解决方法建议,希望对你解决Android Java sqlite rowid 基于另一列中的数据有所启发或帮助;

解决方案已被检查,但还有另一个有效。我会在下面添加它

我整天都在做这件事。在问题的另一个方面得到了帮助,但我又被难住了。如何获取列中具有某些数据的行的rowID?我需要以 int 或字符串形式返回的 rowID。示例数据

_ID|firstname|lastname
1  |Bob      |Dole
2  |Richard  |Simmons
3  |Steven   |King

那么,如果我想在 lastname = "Simmons" 的情况下获取 rowID 应该使用什么代码?运行 SELEct 语句后,我认为 c.getposition() 会这样做,但返回 -1。这是我到目前为止所得到的:

String where = "SELECT rowID,* FROM masterRecord WHERE masnameCol='" + name + "'"; //name is a variable passed from another activity

        cursor c =  db.rawquery(where,null);
        String rowID = "_ID = " + c.getposition(); //This always returns -1. In this example,I need it to be 2
        ContentValues newValues = new ContentValues();
        newValues.put(KEY_MASnameCol,rowID);
        newValues.put(KEY_MASTIMECol,newTimE);
        c.close();

        return db.update(masterRecord,newValues,rowID,null) != 0;

请注意,如果我将 return 语句中的 rowID 替换为“_ID=2”,它将按预期工作。所以我把范围缩小到只需要以某种方式获得那个数字。

其他解决方案

String where = "SELECT rowID,* FROM " + mastername + " WHERE masnameCol='" + name + "'";

        int rowID = 0;

        cursor c =  db.rawquery(where,null);
        c.movetoFirst();  //Needed this line
        if (c.getCount() > 0) {  //and this if statement
            rowID = c.geTint(c.getcolumnIndex("_ID"));
        }
        ContentValues newValues = new ContentValues();
        newValues.put(KEY_MASnameCol,newTimE);
        c.close();

        return db.update(mastername,"_ID =" + rowID,null) != 0;

解决方法

您可以在不首先获取其 rowid 的情况下更新表:

String where = "masNameCol = ?";
ContentValues newValues = new ContentValues();
newValues.put(KEY_MASNAMECOL,"somevaluehere"); // what value do you want this column to be updated?
newValues.put(KEY_MASTIMECOL,newTimE);
return db.update(masterRecord,newValues,where,new String[] {name}) != 0;

请注意,如果列 @H_605_9@masNameCol 不是唯一的,这将使用变量 name 的值更新所有行。

大佬总结

以上是大佬教程为你收集整理的Android Java SQLite rowid 基于另一列中的数据全部内容,希望文章能够帮你解决Android Java SQLite rowid 基于另一列中的数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:Javarowid