我想使用SQLite和我寫的數據庫類,並試圖在數據庫表中插入值,但我得到的例外是:如何解決沒有這樣的表,而將在sqlite的數據基本異常
I/Database(958): sqlite returned: error code = 1, msg = no such table: Exercise
,當我固定的記錄它指向此聲明:
long d= dbAdapter.SaveExecise(date, exercise_Time, ex_Name, minutes, burned_cals);
爲什麼這引發異常?我已閱讀並嘗試過這些問題的解決方案,但錯誤仍然可以解決它? 這是我的代碼:
public class DBAdapter {
private static final String DB_NAME = "MYDB";
private static final int DB_VERSION = 1;
private static final String EXERCISE_TABLE_NAME = "Exercise";
private static final String TAG = "DBAdapter";
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
private Context context;
// table Exercise columns name
public static final String KEY_DATE = "Date";
public static final String KEY_TIME = "Time";
public static final String KEY_NAME = "Name";
public static final String KEY_PERIOD = "Period";
public static final String KEY_BURNEDCALS = "Burned_Calories";
private static final String EXERCISE_TABLE_CREATE =
"create tables Exercise (Date text not null , "
+ "Time text not null ,Name text not null,"
+ "Period REAL not null, Burned_Calories REAL not null,"
+ " primary key(Date,Time));";
public DBAdapter(Context ctxt) {
this.context = ctxt;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(EXERCISE_TABLE_CREATE);
} catch (SQLException e) {
e.printStackTrace();
}
}
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 Exercise");
onCreate(db);
}
public DBAdapter open() throws SQLException {
db = DBHelper.getWritableDatabase();
return this;
}
// ---closes the database---
public void close() {
DBHelper.close();
}
// ---insert Exercise info to the Exercise table---
public long SaveExecise(String date, String time, String name, float period,
float BurnedCalories) {
ContentValues content = new ContentValues();
content.put(KEY_DATE, date);
content.put(KEY_TIME, time);
content.put(KEY_NAME, name);
content.put(KEY_PERIOD, period);
content.put(KEY_BURNEDCALS, BurnedCalories);
return db.insert(EXERCISE_TABLE_NAME, null, content);
}
}
}
,在這裏在這裏我插在練習表中的鍛鍊信息:
save_exercise_btn = (Button) findViewById(R.id.save_exercise_Btn);
save_exercise_btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showSavingDialog();
// save the name,ime,burnedcals of the exercise in the DB
int year, month, day;
year = localCalendar.get(1);
month = localCalendar.get(2) + 1;
day = localCalendar.get(5);
String date = year + "/" + month + "/" + day;
DBAdapter dbAdapter = new DBAdapter(SelectedExerciseInfo.this);
dbAdapter = dbAdapter.open();
long d = dbAdapter.SaveExecise(date, exercise_Time, ex_Name, minutes, burned_cals);
dbAdapter.close();
hideSavingDialog();
}
});
請格式化你的代碼發佈之前!我只是爲你做的,所以我們實際上可以看到什麼可能是錯的。 – 2012-03-27 18:44:42