【发布时间】:2018-09-04 09:03:34
【问题描述】:
public class taskDBHelper extends SQLiteOpenHelper {
//To help with identifying log messages
public static final String LOG_TAG = taskDBHelper.class.getSimpleName();
/** Name of the database file */
private static final String DATABASE_NAME = "taskDataBase.db";
/**
* Database version. If you change the database schema, you must increment the database version.
*/
private static final int DATABASE_VERSION = 1;
/**
* Constructs a new instance of {@link taskDBHelper}
* calls the SQLiteOpenHelper database superclass.
*
* @param context that the app is in
*/
public taskDBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
/**This is called when the database is created for the very first time
* @param db
*/
@Override
public void onCreate(SQLiteDatabase db) {
//This string is used to create the table for tasks
String SQL_CREATE_TASK_DATABASE = "CREATE TABLE " + taskContract.TaskEntry.TABLE_NAME + " ("
+ taskContract.TaskEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ taskContract.TaskEntry.COLUMN_TASK_TITLE + " TEXT NOT NULL, "
+ taskContract.TaskEntry.COLUMN_DESCRIPTION + " TEXT, "
+ taskContract.TaskEntry.COLUMN_DATE + " INTEGER DEFAULT 0, "
+ taskContract.TaskEntry.COLUMN_LAST_COMPLETED + " INTEGER DEFAULT 0, "
+ taskContract.TaskEntry.COLUMN_TIME + " TEXT NOT NULL DEFAULT 0, "
+ taskContract.TaskEntry.COLUMN_RECCURING_PERIOD + " INTEGER NOT NULL DEFAULT 0, "
+ taskContract.TaskEntry.COLUMN_HISTORY + " TEXT, "
+ taskContract.TaskEntry.COLUMN_TYPE_TASK + " INTEGER NOT NULL, "
+ taskContract.TaskEntry.COLUMN_STATUS + " INTEGER NOT NULL)";
db.execSQL(SQL_CREATE_TASK_DATABASE);
//This String creates table for
String SQL_CREATE_Label_DATABASE = "CREATE TABLE " + taskContract.TaskEntry.LABEL_TABLE_NAME + " ("
+ taskContract.TaskEntry.Label_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ taskContract.TaskEntry.COLUMN_LABEL_NAME + " TEXT NOT NULL)";
db.execSQL(SQL_CREATE_Label_DATABASE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//not used
//onCreate(db);
db.execSQL("DROP TABLE IF EXISTS "+ taskContract.TaskEntry.TABLE_NAME);
db.execSQL("DROP TABLE IF EXISTS "+taskContract.TaskEntry.LABEL_TABLE_NAME);
onCreate(db);
}
}
第一个表已创建并按预期工作,但第二个表未执行,我尝试用分号结束这两个语句,但这没有帮助。 每当我尝试访问第二个表时,它都会告诉我该表不存在。任何帮助将不胜感激,谢谢:)
taskDBHelper mDbHelper = new taskDBHelper(this);
SQLiteDatabase db = mDbHelper.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(taskContract.TaskEntry.COLUMN_LABEL_NAME, newTextLabel);
db.insert(taskContract.TaskEntry.LABEL_TABLE_NAME,null,cv);
【问题讨论】:
-
同样的问题?如果你卸载并再次运行?
-
是的,这似乎解决了它哈哈。我假设每次您点击“播放按钮”时它都会卸载并重新安装。非常感谢!
-
尝试添加
Log.d("query",SQL_CREATE_Label_DATABASE)并评论结果