Android的SQLite的,的onCreate()不会被调用

康纳C:

我一直在挣扎着我的Android应用程序中创建一个SQLite数据库。我已经看了许多教程,并在堆栈溢出和其他网站有不少存在的问题。

这里是我DatabaseHelper类

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper {

public SQLiteDatabase db;
public static final String DATABASE_NAME = "user.db";

//Module table
public static final String MODULE_TABLE = "modules_table";
public static final String MODULE_COL_1 = "ID";
public static final String MODULE_COL_2 = "CODE";
public static final String MODULE_COL_3 = "TITLE";

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
    Log.d("SQL", "SQLite dbhelper");
    db = getWritableDatabase();
}

@Override
public void onCreate(SQLiteDatabase db) {
    //db.execSQL("create table " + MODULE_TABLE + "(" + MODULE_COL_1 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + MODULE_COL_2 + " TEXT, " + MODULE_COL_3 + " TEXT " +")");
    db.execSQL("create table modules_table (ID INTEGER PRIMARY KEY 
AUTOINCREMENT, CODE TEXT, TITLE TEXT)");
    Log.d("SQL", "SQLite onCreate");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + MODULE_TABLE);
    onCreate(db);
}
}

我设法让SQLite的dbhelper出现在logcat的,但不能得到的SQLite的onCreate出现,并不能找到在文件浏览器中的任何地方分贝或设备本身,无论是模拟的,真实的设备。

任何帮助将不胜感激,并为代码的格式的歉意!

迈克:

我建议使用以下(暂时的活动): -

DatabaseHelper myDBHelper = new DatabaseHelper(this); //<<<<<<<<< you appear to already have the equivalent of this line (if so use whatever variable name you have given to the DatabaseHelper object)

Cursor csr = myDBHelper.getWritableDatabase().query("sqlite_master",null,null,null,null,null,null);
DatabaseUtils.dumpCursor(csr);
csr.close();

运行,然后检查日志。你应该看到输出的modules_tablesqlite_sequence(后者因为你已经编码自动增量。

SQLITE_MASTER是系统表,其存储系统的信息,如表和索引名,即模式。

其他 - 访问数据库文件

在未植根(数据/数据)保护,因此,您将无法看到数据库文件中的每个应用程序数据的设备。

在一个模拟器,它取决于模拟器。我相信Android的工作室以后的版本做现在允许访问,例如: -

在这里输入图像描述

  • 另外,上述的是Android 10.1丿(API 28),因此该数据库有预写式日志(WAL),因此-shm和-wal文件也存在。

  • 包是mjt.pvcheck。完整路径是数据/数据/ mjt.pvcheck /数据库。

    • 正如你所看到的缓存目录,那么我建议,由于某些原因,也许是失败的,该数据库不存在,但你似乎有访问按然而当通过资源管理器的唯一子文件夹中的虚拟设备文件检查我在我的包缓存
    • 也许,尝试重新运行在设备上(注意在设备浏览器重新选择的设备,因为它不刷新),这可能是另一个原因,你没有看到数据库。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章