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/

相关文章:

android - 哪些移动平台支持 SQLite 数据库

c# - 如何在存在打开的连接时恢复 SQLite 数据库?

android - 拥有版本代码为 1 的 APK(目标 SDK 23 或更高版本)的用户

android - 输入字符串错误 : "sayısı 0x7f070042" Android Studio

android - GCM token 刷新以及何时将 token 发送到服务器

objective-c - 使用 like 选择查询以避免使用 fmdb 时的 SQL 注入(inject)

java - 什么是 'Class.forName("org.sqlite.JDBC");'做?

c# - 如何解决 SQLite 查询上的空绑定(bind)?

android - Facebook - SingleInstance Activity 上的 LoginFragment

android - 如何在android中的Button前面带上Badge Count?