여기에 문제가 있습니다.DatePicker 날짜를 사용하여 DB에서 데이터를 가져 오는 중 문제가 발생했습니다.
메서드에 전달 된 날짜를 기준으로 데이터베이스에서 날짜를 검색하려고하고 값을 반환합니다.
문제는 날짜를받는 변수를 전달하려고 할 때 DB에서 데이터를 선택하는 메서드가 아무 것도 반환하지 않는다는 것입니다. (그리고 LogCat 날짜 변수를 인쇄하고 확인, 날짜 값이 맞습니다.)이 같은 문자열 값을 전달하면 ("1/01/1111") 제대로 반환합니다.
여기에 값을 가져 와서 텍스트를 설정하는 활동에 대한 방법이 있습니다.
public void setBasicContent() {
date = (mMonth + 1) + "/" + mDay + "/" + mYear + " ";
hpdData = this.hpd.selectDuration(date);
mDateDisplay.setText(hpdData);
}
그리고 여기에 날짜 매개 변수에 따라 DB에서 데이터를 선택하는 selectDuration() 메소드가 있습니다.
아아, 활동에서 변수 날짜를 전달하면 코드는 if(cursor.moveToFirst())
범위에 도달하지 않습니다. 하지만 변수 값이 일반 문자열과 완전히 동일하기 때문에 왜 그런지 모르겠습니다.
public String selectDuration(String date) {
String duration = "";
Integer value = 0;
String returnment = "";
Log.i(TAG, "date to select: " + date);
Cursor cursor = this.db.query(TABLE_NAME, new String[] { "duration" },
"date = ?", new String[] { date }, null, null, null);
if (cursor.moveToFirst()) {
do {
Log.i("SELECTDURATION", "inside cursor.moveToFirst()");
duration = cursor.getString(0);
value += Integer.parseInt(duration);
} while (cursor.moveToNext());
returnment = Integer.toString(value);
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
Log.i(TAG, "valor do returnment: " + returnment);
return returnment;
}
흠, 내가 쿼리의 내부에 문자열에 무슨 일이 일어나고 있는지 확실하지 않다 때문에 여기서 무슨 일이 일어나고 있는지 이야기하기 어려운(). 아마도 수동으로 SQL 쿼리를 생성하여 대신 rawQuery()에 전달할 것인가? 그런 다음 실행중인 정확한 명령문을 볼 수 있습니다. –