1

緯度と経度を保存するテーブルがあります。私のテーブルスキーマは次のとおりです

TestId | Latitude | Longitude | TestName |

ここで、testid は INTEGER PRIMARY KEY AUTOINCREMENT です。

テーブルが同じ緯度と経度に存在する場合、以前の raw を更新する必要があります。私は次のようにしています。

コンテンツにすべての価値を追加する

ContentValues values = new ContentValues(); 
values.put(GLNetTestDataContract.TestPinRecord.COLUMN_NAME_TESTNAME, testName);
values.put(GLNetTestDataContract.TestPinRecord.COLUMN_NAME_LATTITUDE, lattitude);
values.put(GLNetTestDataContract.TestPinRecord.COLUMN_NAME_LATTITUDE, lattitude);

/*テーブルに存在する場合は緯度と経度の値を確認し、テストを更新します/

        String selectionCheckLatitudeAndLongitude = Gaurav.TestRecord.COLUMN_NAME_LATTITUDE + "=? AND " +
                                            Gaurav.TestRecord.COLUMN_NAME_LATTITUDE + "=?";

        String[] selectionArgslCheckLatitudeAndLongitude = { String.valueOf(lattitude),String.valueOf(longitude)};
        try{
        newRowId = mDatabase.update(GLNetTestDataContract.TestPinRecord.TABLE_NAME, values, selectionCheckLatitudeAndLongitude, selectionArgslCheckLatitudeAndLongitude);
        }
        catch(Exception e)
        {
            mLogger.printLog("pin", "Exception while updating");
            mLogger.printLog("pin", e.getMessage());
        }
if(newRowId>0)
            mLogger.printLog("pin","Test updated with existing geo location");
        // Insert the new row, returning the primary key value of the new row
        else
        {
            newRowId = mDatabase.insert(GLNetTestDataContract.TestPinRecord.TABLE_NAME,null, values);
            mLogger.printLog("pin","Test inserted with existing geo location");
        }

常に 0 を返します。これは、raw が更新されていないことを意味します。私は何を間違っていますか。どんなポインタも高く評価されます。

4

1 に答える 1

1

同じ列を 2 回チェックしています

Gaurav.TestRecord.COLUMN_NAME_LATTITUDE + "=? AND " +
Gaurav.TestRecord.COLUMN_NAME_LATTITUDE + "=?";

次のようにする必要があります。

Gaurav.TestRecord.COLUMN_NAME_LATTITUDE + "=? AND " +
Gaurav.TestRecord.COLUMN_NAME_LONGITUDE + "=?";

また、あなたのput声明で:

values.put(GLNetTestDataContract.TestPinRecord.COLUMN_NAME_LATTITUDE, lattitude);
values.put(GLNetTestDataContract.TestPinRecord.COLUMN_NAME_LONGITUDE, longitude);
于 2013-07-26T15:00:13.177 に答える