1

我有这个查询

public Cursor control(String a){
    return mDb.query(ProductsMetaData.C_TABLE, null,ProductsMetaData.A+ "=?" , new String[] {String.valueOf(a)},  null, null, null, null);
}

它有效。现在我需要实现“AND”,因为我只想要行,ProductsMetaData.A = aProductsMetaData.B = b我正在做的事情不起作用。

public Cursor control(String a, String b){
    return mDb.query(ProductsMetaData.C_TABLE, null,ProductsMetaData.A+ "=?" + ProductsMetaData.B + "=?" , new String[] {String.valueOf(a), String.valueOf(b)},  null, null, null, null);
}

有人可以帮助我吗?

4

1 回答 1

2

您只需添加AND关键字:

ProductsMetaData.A + "=? AND " + ProductsMetaData.B + "=?"

您的参数ab已经是字符串,因此您可以简单地使用:

new String[] {a, b}

我能问你我怎样才能实现更新和删除吗?

删除很容易:

public int delete(String a, String b) {
    return mDb.delete(ProductsMetaData.C_TABLE, ProductsMetaData.A + "=? AND " + ProductsMetaData.B + "=?", new String[] {a, b});
}

更新需要一个 ContentValues 对象:

public int update(String newA, String newB, String oldA, String oldB) {
    ContentValues values = new ContentValues();
    values.put(ProductsMetaData.A, newA);
    values.put(ProductsMetaData.B, newB);
    return mDb.update(ProductsMetaData.C_TABLE, values, ProductsMetaData.A + "=? AND " + ProductsMetaData.B + "=?", new String[] {oldA, oldB});
}

最后一点,如果你发现自己使用ProductsMetaData.A + "=? AND " + ProductsMetaData.B + "=?"了很多次,你可以把它保存在一个static final变量中,就像C_TABLE,AB:

private static final String WHERE_A_B = ProductsMetaData.A + "=? AND " + ProductsMetaData.B + "=?";
于 2012-11-10T19:14:21.207 回答