编辑:找到解决方案(在后的底部),仍然不知道问题是什么,虽然在我的SQLite数据库有一个很奇怪的错误(或者也许我只是没有SQLite的光标值变化
林得到足够的睡眠)
在输入用户体重,并输入日期。如果用户在同一天输入两次或更多,则最后一个输入被覆盖。 它似乎工作正常,但是当我拉出数据时,日期字符串由于某种原因而更改。
创建表:
String CREATE_BODYWEIGHT_TABLE = "CREATE TABLE " + TABLE_BODYWEIGHT + "(" + KEY_DATE + " TEXT PRIMARY KEY," + KEY_WEIGHT + " REAL)";
输入和检索:
public void insertWeight(String date, float weight){
SQLiteDatabase db = this.getWritableDatabase();
Log.d("DBHandler date", date);
db.execSQL("INSERT OR REPLACE INTO " + TABLE_BODYWEIGHT + "(date, weight) VALUES (" + date + ", " + weight + ")");
}
public HashMap<String, Float> getAllWeightEntries(){
HashMap<String, Float> dateAndWeight = new HashMap<String, Float>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_BODYWEIGHT;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Log.d("Return date", cursor.getString(0));
dateAndWeight.put(cursor.getString(0), cursor.getFloat(1));
} while (cursor.moveToNext());
}
// return map
return dateAndWeight;
}
这是logcat的输出:
07-16 12:03:42.758: DBHandler date: 2014-07-16
07-16 12:03:42.798: Return date: 1991
07-16 12:03:42.798: Date: 1991
07-16 12:03:42.798: Weight: 123.0
编辑: 我改变了我的insertWeight到以下,现在它工作:
public void insertWeight(String date, float weight){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_DATE, date);
values.put(KEY_WEIGHT, weight);
db.insertWithOnConflict(TABLE_BODYWEIGHT, null, values, SQLiteDatabase.CONFLICT_REPLACE);
db.close();
}
尝试从设备中拉出数据库并查看它。它存储什么?使用这些解决方案之一如何拉出数据库:http://stackoverflow.com/questions/14744496/extract-database-of-an-application-from-android-device-through-adb或http:// stackoverflow。 COM /问题/ 9997976/Android的拉取的SQLite数据库,Android的设备。 –