我正在尝试将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 ...
答案 0 :(得分:1)
因为您无法使用==
运算符比较两个字符串,所以您的if条件永远不会成真。
要比较两个字符串,只需使用 Java String Class 中的.equals()
或.equalsIgnoreCases()
。
if(devicesCursor.getString(0).equals(werte.getAsString("name")))