對於學校的Android計步器項目,我使用SQLite遵循教程。我只有一個表格,其中包含按天製作的步驟數(以字符串形式)。 問題是,無論我哪天打電話,它都會讓我2017年成爲步數。所以我想這跟我收到的日期有關。android sqlite總是在查詢中獲得2017年
這裏是處理數據庫邏輯的類:我測試我的應用程序在我的Galaxy S4迷你
public class DatabaseHandler extends SQLiteOpenHelper {
private static String TAG = "DatabaseHandler";
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "statsManager";
// Table name
private static final String DAILY_STATS_TABLE = "dailyStats";
// Contacts Table Columns names
private static final String KEY_DAY = "day";
private static final String KEY_STEPS = "steps";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(TAG, "::onCreate");
String CREATE_STAT_TABLE = "CREATE TABLE " + DAILY_STATS_TABLE + "(" + KEY_DAY + " TEXT PRIMARY KEY," + KEY_STEPS + " INTEGER" + ")";
db.execSQL(CREATE_STAT_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.d(TAG, "::onUpgrade");
db.execSQL("DROP TABLE IF EXISTS " + DAILY_STATS_TABLE);
onCreate(db);
}
public void addContact(DailyStat dailyStat) {
Log.d(TAG, "::addContact");
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_DAY, dailyStat.getFormattedDate());
Log.d(TAG, "trying to insert date : " + dailyStat.getFormattedDate());
values.put(KEY_STEPS, dailyStat.get_steps());
Log.d(TAG, "trying to insert steps : " + dailyStat.get_steps());
// Inserting Row
db.insert(DAILY_STATS_TABLE, null, values);
db.close(); // Closing database connection
}
public DailyStat getDailyStat(String day) throws ParseException, NullPointerException {
Log.d(TAG, "::getDailyStat");
Log.i(TAG, "looking for : " + String.valueOf(day));
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(DAILY_STATS_TABLE,
new String[] {KEY_DAY, KEY_STEPS},
KEY_DAY + "=?",
new String[] {day},
null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
Log.i(TAG, cursor.toString());
DailyStat result = null;
try {
Log.d(TAG, "got : " + cursor.getString(0) + " and " + cursor.getInt(0));
result = new DailyStat(cursor.getString(0), cursor.getInt(0));
} catch (CursorIndexOutOfBoundsException e) {
Log.i(TAG, "no stats for this day.");
} finally {
cursor.close();
}
return result;
}
// other methods
,所以我不能輕易看到數據庫的樣子。 我聽說你看不到使用insert()和query()方法形成的請求。
任何人有什麼錯誤的想法?
你不覺得,應該是'cursor.getString(0),cursor.getInt(1)' –
你實際上可以很容易地看到數據庫...嘗試Stetho庫。這並不能解決這個錯誤 –
可能的話,看看我假設的教程,例如,如果我有一個具有一列INT列的表作爲最後一列,它將通過cursor.getInt(0)來訪問,因爲它是表中的第一個int。 – CodingMouse