【发布时间】:2016-12-22 17:31:55
【问题描述】:
我的 INSERT OR REPLACE 查询似乎不起作用。它只将值插入数据库但从不更新。我希望它检查日期,如果它找到相同的日期,那么它只会更新值而不插入新行。
这是我的查询:
Set<Map.Entry<String, Object>> s=contentValues.valueSet();
Iterator itr = s.iterator();
String[] valuesArray;
List<String> valuesList = new ArrayList<String>();
while(itr.hasNext())
{
Map.Entry me = (Map.Entry)itr.next();
Object value = me.getValue();
valuesList.add(String.valueOf(value));
}
valuesArray = valuesList.toArray(new String[valuesList.size()]);
Date unformatedDate = new Date(valuesArray[2]);
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
String formatedDate = DATE_FORMAT.format(unformatedDate);
valuesArray[2] = formatedDate;
db.execSQL("INSERT OR REPLACE INTO history (_id, totalElevation, datetime, totaldistance, averageSpeed) VALUES ((SELECT _id FROM history WHERE datetime = ?),?,?,?,?)", valuesArray);
这是我的表结构:
sqLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS history (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"datetime DATE, " +
"totaldistance DOUBLE, " +
"totalElevation DOUBLE," +
"averageSpeed DOUBLE" +
");");
【问题讨论】:
-
sqlite 对不起......它在标题中
-
子查询中使用的实际日期值是多少?是否存在于数据库中?
-
你需要使日期时间唯一
标签: android sqlite insert sql-update android-sqlite