SQLite 데이터베이스를 설정했습니다. 그것은 내가 그것을 액세스해야하는 클래스를 실행할 때 응용 프로그램이 충돌하는 것 같습니다. 처음에 테이블 생성 문이 문제 였지만 그 오류가 해결 된 후에도 여전히 작동하지 않는다는 것이 나에게 지적되었습니다. 데이터베이스 설정은 다음과 같습니다 -Android SQLite 데이터베이스 설정 오류?
public class DataBaseHelper
{
public static final String KEY_ROWID = "_id";
public static final String KEY_CODE = "code";
public static final String KEY_DAYS = "days";
public static final String KEY_BMI = "bmi";
public static final String KEY_ROWID2 = "id2";
public static final String KEY_DATE = "date";
public static final String KEY_STEPS = "steps";
public static final String KEY_CALs = "calories";
private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "workout";
private static final String DATABASE_TABLE = "goals";
private static final String DATATABLE = "acts";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE =
"create table goals (_id integer primary key autoincrement, "
+ "code text not null, days text not null, "
+ "bmi text not null);";
private static final String DATABASE_CREATE2 =
"create table acts (id2 integer primary key autoincrement, "
+ "date text not null, steps text not null, "
+ "calories text not null);";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DataBaseHelper(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(DATABASE_CREATE);
db.execSQL(DATABASE_CREATE2);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
Log.w(TAG, "Upgrading database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS titles");
onCreate(db);
}
}
//---opens the database---
public DataBaseHelper open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}
//---closes the database---
public void close()
{
DBHelper.close();
}
//---insert a title into the database---
public long insertTitle(String isbn, String title, String publisher)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_CODE, isbn);
initialValues.put(KEY_DAYS, title);
initialValues.put(KEY_BMI, publisher);
return db.insert(DATABASE_TABLE, null, initialValues);
}
public long insertActivity(String date, String steps, String Calories)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_DATE, date);
initialValues.put(KEY_STEPS, steps);
initialValues.put(KEY_CALs, Calories);
return db.insert(DATATABLE, null, initialValues);
}
//---deletes a particular title---
public boolean deleteTitle(long rowId)
{
return db.delete(DATABASE_TABLE, KEY_ROWID +
"=" + rowId, null) > 0;
}
public void deleteFirst()
{
Cursor cursor = db.query(DATABASE_TABLE, null, null, null, null, null, null);
if(cursor.moveToFirst()) {
long rowId = cursor.getLong(cursor.getColumnIndex(KEY_ROWID));
db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null);
}
}
public boolean deleteAct(long rowId)
{
return db.delete(DATATABLE, KEY_ROWID +
"=" + rowId, null) > 0;
}
//---retrieves all the titles---
public Cursor getAllTitles()
{
return db.query(DATABASE_TABLE, new String[] {
KEY_ROWID,
KEY_CODE,
KEY_DAYS,
KEY_BMI},
null,
null,
null,
null,
null);
}
public Cursor getAllActs()
{
return db.query(DATATABLE, new String[] {
KEY_ROWID2,
KEY_DATE,
KEY_STEPS,
KEY_CALs},
null,
null,
null,
null,
null);
}
//---retrieves a particular title---
public Cursor getTitle(long rowId) throws SQLException
{
Cursor mCursor =
db.query(true, DATABASE_TABLE, new String[] {
KEY_ROWID,
KEY_CODE,
KEY_DAYS,
KEY_BMI
},
KEY_ROWID + "=" + rowId,
null,
null,
null,
null,
null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public Cursor getAct(long rowId) throws SQLException
{
Cursor mCursor =
db.query(true, DATATABLE, new String[] {
KEY_ROWID2,
KEY_DATE,
KEY_STEPS,
KEY_CALs
},
KEY_ROWID2 + "=" + rowId,
null,
null,
null,
null,
null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public boolean updateAct(long rowId, String date,
String steps, String cals)
{
ContentValues args = new ContentValues();
args.put(KEY_DATE, date);
args.put(KEY_STEPS, steps);
args.put(KEY_CALs, cals);
return db.update(DATATABLE, args,
KEY_ROWID2 + "=" + rowId, null) > 0;
}
//---updates a title---
public boolean updateTitle(long rowId, String isbn,
String title, String publisher)
{
ContentValues args = new ContentValues();
args.put(KEY_CODE, isbn);
args.put(KEY_DAYS, title);
args.put(KEY_BMI, publisher);
return db.update(DATABASE_TABLE, args,
KEY_ROWID + "=" + rowId, null) > 0;
}
}
및 로그 고양이는 : 나는 일이 나에게 문제를 말하고있다
04-06 17:20:14.561: E/AndroidRuntime(24550): FATAL EXCEPTION: main
04-06 17:20:14.561: E/AndroidRuntime(24550): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.b00348312.workout/com.b00348312.workout.WorkoutProgress}: android.database.sqlite.SQLiteException: no such column: bmi: , while compiling: SELECT _id, code, days, bmi FROM goals
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.app.ActivityThread.access$2300(ActivityThread.java:135)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.os.Handler.dispatchMessage(Handler.java:99)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.os.Looper.loop(Looper.java:144)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.app.ActivityThread.main(ActivityThread.java:4937)
04-06 17:20:14.561: E/AndroidRuntime(24550): at java.lang.reflect.Method.invokeNative(Native Method)
04-06 17:20:14.561: E/AndroidRuntime(24550): at java.lang.reflect.Method.invoke(Method.java:521)
04-06 17:20:14.561: E/AndroidRuntime(24550): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
04-06 17:20:14.561: E/AndroidRuntime(24550): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-06 17:20:14.561: E/AndroidRuntime(24550): at dalvik.system.NativeStart.main(Native Method)
04-06 17:20:14.561: E/AndroidRuntime(24550): Caused by: android.database.sqlite.SQLiteException: no such column: bmi: , while compiling: SELECT _id, code, days, bmi FROM goals
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:53)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1412)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1296)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1251)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1331)
04-06 17:20:14.561: E/AndroidRuntime(24550): at com.b00348312.workout.DataBaseHelper.getAllTitles(DataBaseHelper.java:131)
04-06 17:20:14.561: E/AndroidRuntime(24550): at com.b00348312.workout.WorkoutProgress.fillData(WorkoutProgress.java:27)
04-06 17:20:14.561: E/AndroidRuntime(24550): at com.b00348312.workout.WorkoutProgress.onCreate(WorkoutProgress.java:22)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
04-06 17:20:14.561: E/AndroidRuntime(24550): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
04-06 17:20:14.561: E/AndroidRuntime(24550): ... 11 more
한 Statment입니다 :
04-06 17:20:14.561: E/AndroidRuntime(24550): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.b00348312.workout/com.b00348312.workout.WorkoutProgress}: android.database.sqlite.SQLiteException: no such column: bmi: , while compiling: SELECT _id, code, days, bmi FROM goals
하지만 난 어떤 곳을 해달라고하지 필드 bmi가 호출 될 때마다 아무런 문제가없는 것처럼 보입니다. 내가 놓친 게 있니?
해당 열이 없습니다. bmi in your database? –
그래, 그것을 지적하지만 성명에서 dmi를 정의했습니다 'public static final String KEY_BMI = "bmi"; '그리고 그것은'개인 정적 최종 문자열 DATABASE_CREATE = "테이블 목표 (_id 정수 기본 키 autoincrement," + "코드 텍스트가 null이 아닌 일수가 아닌 텍스트," + "bmi text not null을 생성합니다.); "; ' –