我想使用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