android - SQLite 数据库助手类

标签 android sqlite

当我们从 Android 应用程序创建 SQLite 数据库时,可以使用扩展 SQLiteOpenHelper 的 DatabaseHelper 类。

我的构造函数如下

public DatabaseHelper(Context context)  
{
      super(context, dbName, null, DATABASE_VERSION);  
}

然后是onCreate()方法

public void onCreate(SQLiteDatabase db) 
{
    String qry = "CREATE TABLE DEPT(dept_id INTEGER PRIMARY KEY, deptName TEXT)";   
    db.execSQL(qry);
    InsertDepts(db); 
}

但是当我创建 DatabaseHelper 类的实例时,我的数据库还没有创建。

我相信当我从此类创建对象时,构造函数会执行,因为尚未创建数据库,它将创建数据库并执行 onCreate() 方法。所以一定要创建一个数据库。

或者直到我们执行下面的代码它才执行 onCreate() 方法,即使我们从类中创建了一个对象。

databaseHelper.getWritableDatabase()

谁能解释一下databasehelper类的执行顺序。

最佳答案

您创建了 DatabaseHelper 类的实例,这会导致执行构造函数。构造函数将执行母类构造函数 (SQLiteOpenHelper),然后检查数据库文件是否已经存在。

如果它存在,什么都不做,你的对象被创建。

如果不存在,则创建数据库文件并调用 onCreate 方法。

你说,你的数据库不存在。您在 LogCat 中收到任何错误吗?另外,你有没有试过accessing the Database using the adb

关于android - SQLite 数据库助手类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609827/

相关文章:

java - 如何修复 Android 错误“类 Context 中的方法 openFileInput 无法应用于给定类型;2

android - 即使应用程序已关闭,如何从服务进行 JNI 调用?

android - 如何为小屏幕和大屏幕设置相同的webview宽度

php - 使用嵌套集模型在 sqlite 中存储分层数据如何将一个类别移动到另一个类别

SQLite:包含用户每个时期的最大分数的表

sqlite - Windows 上 Electron 的 CPU 使用率高

android - 将 iframe 添加到 Appcelerator 应用程序

android - 通过 Id (int) 获取 View Id (string) 的更简单方法

c++ - 错误 C2440 : 'initializing' : cannot convert from

swift - SQLITE 和 Swift 3 挑战