我在想为什么我不能在这里创建表格,Android Studio从来没有显示过语法错误
class SQLiteHelper (context: Context) :
SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION){
companion object{
private const val DATABASE_VERSION = 1
private const val DATABASE_NAME = "student.db"
private const val TBL_STUDENT = "tbl_student1"
private const val ID = "id"
private const val NAME = "name"
private const val EMAIL = "email"
}
override fun onCreate(db: SQLiteDatabase?) {
val createTBlStudent = ("CREATE TABLE " + TBL_STUDENT + " ("
+ ID + " INTEGER PRIMARY KEY, " + NAME + " TEXT, "
+ EMAIL + " TEXT " + ")")
db?.execSQL(createTBlStudent)
}
}
1条答案
按热度按时间dkqlctbz1#
最有可能的问题是您尚未访问该数据库,因此该数据库将不存在。
另一个问题可能是您已经运行了代码,表创建失败,并且您没有删除空数据库。如果是这样的话,只需卸载应用并重新运行。
onCreate
,已经创建了数据库,即使onCreate
失败,onCreate
也不会再次运行,除非删除数据库(卸载是最简单的方式)。如果只使用SQLiteHelper示例化,则不会创建数据库。在调用onCreate方法之前,您必须尝试对数据库执行一些操作。
下面显示了这一点(假设您已经包含了
onUpgrade
方法的覆盖(它不需要在正文中执行任何操作))。此代码使用与您的代码完全相同的副本(但覆盖了onUpgrade)。在活动中:-
作为全新安装运行时(即,当不存在数据库时),日志包括:
如可以看到的,直到访问数据库并且获得可写(或很可能是可写的)数据库时,该数据库实际上才被创建。
当然,除非卸载数据库的应用程序存在,否则在数据库的整个生命周期内,这是onCreate方法唯一一次被自动调用。
使用应用程序检查,您可以看到:-
当然,正如您所看到的,您的代码很好并且工作正常(与前面提到的
onUpgrade
方法不同)