我有这个问题

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);
}

有人能帮我吗?

最佳答案

您只需添加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_TABLEAB
private static final String WHERE_A_B = ProductsMetaData.A + "=? AND " + ProductsMetaData.B + "=?";

关于android - Android中的sqlite查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13325227/

10-13 03:11