Watch how i call the `db.delete` method; if I do the following a record is successfully deleted:

```
public void deteleProfile(Long id) throws SQLException {
        SQLiteDatabase db = helper.getWritableDatabase();
        Integer i = db.delete(ProlificDatabase.TABLE, "_id=?", new String[] {id.toString()});
        Log.d(TAG, i + " records deleted where id is " + id);

```

however if I do this:

```
public void deteleProfile(Long id) throws SQLException {
        SQLiteDatabase db = helper.getWritableDatabase();
        Integer i = db.delete(ProlificDatabase.TABLE, "?=?", new String[] {BaseColumns._ID,id.toString()});
        Log.d(TAG, i + " records deleted where id is " + id);

```

no records are deleted. also no exceptions or warnings are raised to say something has gone wrong.

in case you didn't catch it, the difference between the two calls were:

`..."_id=?", new String[] {id.toString()});`

vs

`..."?=?", new String[] {BaseColumns._ID,id.toString()});`

documentation for BaseColumns.\_ID is:

`public static final String _ID` with a `Constant Value: "_id"`

The latter way seems to make for neater code, but why doesn't it work?

**EDIT:**
I suspect the `whereargs` parameter only applies to the right side of an expression.

Can someone confirm this?