与数据库比较的ContentValues对象不起作用

时间:2013-01-10 11:43:43

标签: android string

我正在尝试将ContentValues对象与数据库中的值进行比较,但我无法弄清楚为什么以下内容无效:

ContentValues werte = new ContentValues();
try{
    JSONObject ClickedItem = new JSONObject();
    ClickedItem = resultArray.getJSONObject(position);
    werte.put("name", ClickedItem.getString("name"));
    werte.put("hersteller", ClickedItem.getString("hersteller"));
}
catch (Exception e) {
    System.out.println("Whoops - something went wrong!3");
    e.printStackTrace();
}

Boolean allreadyAdded = false;
Cursor devicesCursor = mDatenbank.query("addedDevices", new String[] {"name", "hersteller"}, null, null, null, null, null);
startManagingCursor(devicesCursor);
devicesCursor.moveToFirst();

for (int i=0;i<devicesCursor.getCount();i++){

    if(devicesCursor.getString(0) == werte.getAsString("name")){
        allreadyAdded = true;
    }
    devicesCursor.moveToNext();
}

if(allreadyAdded==false){                       
    mDatenbank.insert("addedDevices", null, werte);
}

if(devicesCursor.getString(0) == werte.getAsString("name"))不会工作,我无法弄清楚原因。 System.out.println向我显示devicesCursor和两者都具有相同的值但已经添加将不会设置为true ...

1 个答案:

答案 0 :(得分:1)

因为您无法使用==运算符比较两个字符串,所以您的if条件永远不会成真。

要比较两个字符串,只需使用 Java String Class 中的.equals().equalsIgnoreCases()

if(devicesCursor.getString(0).equals(werte.getAsString("name")))