2014-05-08 2 views
0

SQLite를 사용하여 버튼을 누른 횟수를 계산하는 간단한 응용 프로그램을 작성하려고합니다. 두 개의 열이있는 표가 하나뿐입니다. 나는 다음과 같이 SQLiteOpenHelper 구현이 :SQLite 예외 열이 없습니다.

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

public class SqliteHelperInstance extends SQLiteOpenHelper { 

public static final String DATABASE_NAME = "app_stats"; 
public static final String TABLE_NAME = "day_stats"; 
public static final String COLUMN_DATE = "date"; 
public static final String COLUMN_CIGCOUNT = "cigcount"; 
public static final int DATABASE_VERSION = 1; 

private static final String CREATE_DB = "create table " + TABLE_NAME + " (" + COLUMN_DATE + " text " 
+ COLUMN_CIGCOUNT + " integer);"; 

public SqliteHelperInstance(Context context){ 
    super(context,DATABASE_NAME , null, DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    db.execSQL(CREATE_DB); 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 
    db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME); 
    onCreate(db); 
} 

}

그래서 나는 두 개의 열이있는 테이블이 처음이 "날짜"옆에 카운터입니다. 이제 데이터베이스 관리자 클래스를 사용하여 테이블에 삽입 할 메서드를 만듭니다.

public class DbManager { 

private SqliteHelperInstance sqlHelper; 
private SQLiteDatabase database; 
    public DbManager(Context context){ 
    sqlHelper = new SqliteHelperInstance(context); 
} 
    public void open() throws SQLException{ 
    database = sqlHelper.getWritableDatabase(); 
} 
    public void addEntry(String dateEntry){ 
      DbEntry newEntry = new DbEntry(); 
      newEntry.setDate(dateEntry); 
      newEntry.setCounter(0); 
    values.put(SqliteHelperInstance.COLUMN_DATE, dateEntry); 
    values.put(SqliteHelperInstance.COLUMN_CIGCOUNT, newEntry.getCigNum()); 
    database.insert(SqliteHelperInstance.TABLE_NAME, null, values); 
    } 
} 

하지만 내 응용 프로그램을 실행할 때 열 "cigcount"가 존재하지 않는다는 오류가 발생합니다. 다음은 catlog 메시지입니다.

05-08 16:23:15.830: E/SQLiteLog(1076): (1) table day_stats has no column named cigcount 
05-08 16:23:15.850: E/SQLiteDatabase(1076): Error inserting cigcount=0 date=2014-05-08 
05-08 16:23:15.850: E/SQLiteDatabase(1076): android.database.sqlite.SQLiteException: table day_stats has no column named cigcount (code 1): , while compiling: INSERT INTO day_stats(cigcount,date) VALUES (?,?) 

누구든지이 문제를 해결할 수 있습니까?

답변

4

쉼표있다 , 당신의 열 사양 사이에 실종 :

private static final String CREATE_DB = "create table " + TABLE_NAME + " (" + COLUMN_DATE + " text " 
+ COLUMN_CIGCOUNT + " integer);"; 

이전 데이터베이스 파일이 제거 될 수 있도록이 앱을 제거 고정 후

private static final String CREATE_DB = "create table " + TABLE_NAME + " (" + COLUMN_DATE + " text, " 
+ COLUMN_CIGCOUNT + " integer);"; 

을해야합니다. (onUpgrade()에도 구문 오류가 있으며 버전 만 증가해도 스키마를 업데이트 할 수 없습니다.)

+0

실수에 대해서는 맞지만 문제가 해결되지는 않았습니다! 나는 여전히 같은 오류가 발생합니다! – Salman9

+0

또한 제거하고 다시 설치 했습니까? – laalto

+0

내 전화를 사용하여 테스트 중이므로 점심 식사를 할 때마다 앱을 다시 설치한다고 생각하니? – Salman9

관련 문제