2011-06-14 2 views
0

SQL 데이터베이스를 조합하려고하지만 실제로 작동시키는 방법을 모릅니다. 의도는 여러 개의 열을 갖는 것입니다. 일부는 정수를 사용하고, 일부는 셀에 문자열을 사용합니다. 이 응용 프로그램의 경우 반복을 정수로, 문자열을 연습으로합니다. 다음은 코드의 관련 부분입니다.SQL 데이터베이스 유형 문제

public static final String KEY_ROWID = "_id"; 
public static final String KEY_DATE = "date"; 
public static final String KEY_EXERCISE = "exercise"; 
public static final String KEY_REPS = "repetitions"; 

private static final String DATABASE_CREATE = "create table " + DATABASE_TABLE + " (" 
    + KEY_ROWID + " integer primary key autoincrement, " 
    + KEY_DATE + " text not null, " 
    + KEY_EXERCISE + " text not null, " 
    + KEY_REPS + " int not null, " 

public long createExercise(String exercise, int reps) { 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_DATE, date); 
    initialValues.put(KEY_EXERCISE, exercise); 
    initialValues.put(KEY_REPS, reps); 

return mDb.insert(DATABASE_TABLE, null, initialValues); 
} 

테스트 문자열을 사용하여이 테이블에 데이터를 넣었습니다. 거기에서

public Cursor graphQuery(String exercise, String workout) { 
    return mDb.query(DATABASE_TABLE, new String[] {KEY_DATE, KEY_REPS}, null, null,  
     null, null, null); 

내가 숫자 배열에 데이터를 입력하려고하지만 그것은 나에게 오류를 제공합니다 : 그럼 다음 쿼리로 데이터를 가져보십시오. KEY_REPS를 선언 할 때 KEY_REPS를 숫자로 표시합니다. 하지만 KEY_REPS를 숫자로 선언하면 데이터 베 이스를 만들 수 없습니다.

Cursor cursor = mDbHelper.graphQuery(currentexercise, currentworkout); 
startManagingCursor(cursor); 
Number[] reps = new Number[]{workoutDbAdapter.KEY_REPS}; //error here 

데이터베이스를 만드는 방법에 핵심적인 부분이 누락 된 것 같습니다. 누구든지 도와 줄 수 있습니까? (정수를 사용하여 제외) 내가 따라하려고 책

코드는 안드로이드에 적용되는 사람이 SQLite는 가르치는 좋은 웹 사이트의 알고 있다면 있음을 의미하며,

private void fillData() { 
    Cursor remindersCursor = mDbHelper.fetchAllReminders(); 
    startManagingCursor(remindersCursor); 
// Create an array to specify the fields we want (only the TITLE) 
    String[] from = new String[]{RemindersDbAdapter.KEY_TITLE}; 

을 (첫 번째 대답에 코멘트에서) 그것은 굉장 할 것입니다. 내가 찾을 수 있었던 유일한 것들은 일반적인 SQL 사이트이고 그들은별로 도움이되지 않습니다.

+0

. 단순히 오류 메시지를 설명하는 것은 그 코드를 붙여 넣는 것만 큼 유용하지는 않습니다. 코드와 마찬가지로'date'가 정의되지 않았기 때문에'createExercise'가 정의 된대로 표시되는지 확신 할 수 없습니다. –

답변

2
Cursor cursor = mDbHelper.graphQuery(currentexercise, currentworkout); 
startManagingCursor(cursor); 
Number[] reps = new Number[]{WorkoutDbAdapter.KEY_REPS}; //error here 

여기이 코드는 원하는대로 (내 생각에는) 수행하지 않습니다. 커서를 반복하고 거기에서 데이터를 가져와야합니다. WorkoutDbAdapter.KEY_REPS가 reps 열 이름을 보유하는 문자열 상수라는 데이터베이스를 사용하기 위해 안드로이드 샘플 코드를 따른다면 꽤 확신합니다. 이 같은 일을

시도 : 복사가 등장 * 정확히 * 오류 메시지를 붙여 넣기하세요 :이 당신이 묻는 질문에 대한

List<Number> allReps = new ArrayList<Number>(); 
Cursor cursor = mDbHelper.graphQuery(currentexercise, currentworkout); 
while (cursor.moveToNext()) { 
    int reps = cursor.getInt(cursor.getColumnIndexOrThrow(mDbHelper.KEY_REPS)); 
    allReps.add(reps); 
} 
Number[] repsArray = allReps.toArray(new Number[]{}); 
// do stuff with repsArray and don't forget to close cursor 
+0

나는 내가 만든 책의 예를보고있다. 그들의 코드는 작동하지만 문자열을 사용하고 있으며 정수를 사용하려고합니다. 새 코드가 질문 하단에 붙습니다. – easycheese

+0

책이나 나머지 코드가 없기 때문에 다른 쿼리에 전달할 문자열 이름의 문자열 배열을 작성하고있는 것 같습니다. 샘플을 계속 따라가는 대신 다음과 같이 바꾸십시오 :'Number [] reps = new Number [] {KEY_REPS};''String [] repsCol = new String [] {KEY_REPS}; ' – Pedantic

+0

문제는 Number 배열이 내 다음 메서드 호출에 사용하십시오. 그리고 문자열 배열을 숫자 배열로 변환하는 간단한 방법을 알아낼 수 없으므로 데이터베이스 열을 정수로 만들려고했지만 실패했을 수도 있습니다. (원래 문자열이 있었고 효과가있었습니다.) Oooh .... SQL 데이터베이스는 문자열을 모두 저장합니까? – easycheese