Мой запрос INSERT или REPLACE не работает. Он только вставляет значения в базу данных, но никогда не обновляется. Я бы хотел, чтобы он проверял дату, если она находит ту же дату, тогда она просто обновит значения и не добавит новую строку.SQLite INSERT ИЛИ 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" +
");");
mysql или SQLite? – GurV
sqlite извините ... ну в заголовке –
Каково фактическое значение даты, используемое в подзапросе? Он существует в базе данных? –