2012-09-07 2 views
2

그래서 이름, 칼로리 및 단백질 열이있는 데이터베이스를 만들려고합니다. 단백질의 열이 '아무튼 말하는 것이 추가하려고 할 때여러 열이있는 Android SQLite 데이터베이스

public void createFood(Food f) { 
    ContentValues values = new ContentValues(); 
    values.put(SQLHelp.CALORIE_COLUMN, f.getCalories()); 
    values.put(SQLHelp.PROTEIN_COLUMN, f.getProtein()); 
    values.put(SQLHelp.NAME_COLUMN, f.getName()); 
    database.insert(SQLHelp.TABLE_FOOD, null, 
      values); 
} 

, 로그 캣이 나에게 SQLiteException을 제공합니다

public class SQLHelp extends SQLiteOpenHelper{ 
    static final String DATABASE_NAME = "Food.db"; 
    static final String TABLE_FOOD = "food"; 
    static final String NAME_COLUMN = "FoodName"; 
    static final String CALORIE_COLUMN = "Calorie"; 
    static final String PROTEIN_COLUMN = "Protein"; 
    static final String FAT_COLUMN = "Fat"; 
    static final String COLUMN_ID = "id"; 

    public SQLHelp(Context c){ 
     super(c, DATABASE_NAME, null, 1); 
    } 

    public void onCreate(SQLiteDatabase db){ 
     String makeTable = "CREATE TABLE " + TABLE_FOOD + "(" 
       + NAME_COLUMN + " TEXT," + CALORIE_COLUMN + " INTEGER," 
       + PROTEIN_COLUMN + " INTEGER" + ")"; 
     db.execSQL(makeTable);  
    } 

값은 다음과 같은 방법으로 데이터베이스에 추가 : 여기에 생성 문이다 존재하지 않습니다. 더 이상 낯선 것은 단백질 줄을 주석 처리 한 코드를 실행할 때 모든 것이 잘 작동한다는 것입니다.

감사합니다.

+0

반영됩니다. 적어도 여러분이 작성한 메소드 이름을 보여주는 첫 줄까지 logcat에서 스택 추적을 게시하십시오. –

답변

3

DB 도우미는 버전 번호를 업데이트 할 때만 데이터베이스를 업데이트합니다. 해당 열을 포함하지 않는 버전 # 1 DB를 실행하고 있습니다. 2로 버전을 변경하는 경우

은, 당신의`Food` 클래스의 코드를 게시 여기에 사용하는 espeically에 게터하시기 바랍니다 새로 추가 된 열

public SQLHelp(Context c){ 
     super(c, DATABASE_NAME, null, 2); //note the 2 here 
    } 
관련 문제