INSERT OR REPLACEクエリが機能していないようです。データベースに値を挿入するだけで更新することはありません。私はそれが日付をチェックするようにしたいと思います。同じ日付を見つけると、値を更新し、新しい行を挿入しません。ここで SQLite 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" +
");");
mysqlまたはsqlite? – GurV
sqlite申し訳ありません...それはタイトルにあります。 –
サブクエリで使用される実際の日付の値は何ですか?それはデータベースに存在しますか? –